JavaScript 动态加载脚本和样式的方法


Posted in Javascript onApril 13, 2015

一 动态脚本

当网站需求变大,脚本的需求也逐步变大;我们不得不引入太多的JS脚本而降低了整站的性能;
所以就出现了动态脚本的概念,在适时的时候加载相应的脚本;

1.动态引入js文件

var flag = true;
  if(flag){  
    loadScript('browserdetect.js');          // 调用函数,引入路径;
  }
  function loadScript(url){
    var script = document.createElement('script');   // 创建script标签;
    script.type = 'text/javascript';          // 设置type属性;
    script.src = url;                 // 引入url;
    document.getElementsByTagName('head')[0].appendChild(script);  // 将script引入<head>中;
  }

2.动态执行js代码

var script = document.createElement('script');
  script.type = 'text/javascript';
  var text = document.createTextNode("alert('Lee')");  // 设置script标签内容;IE会报错;
  script.appendChild(text);
  document.getElementsByTagName('head')[0].appendChild(script);

  // PS:IE浏览器认为script是特殊元素,不能再访问子节点;
  // 为了兼容,可以使用text属性来代替;
  function loadScriptString(code){
    var script = document.createElement("script");
    script.type = "text/javascript";
    try{
    // IE浏览器认为script是特殊元素,不能再访问子节点;报错;
      script.appendChild(document.createTextNode(code));// W3C方式;
    }catch(ex){
      script.text = code;









// IE方式;
    }
    document.body.appendChild(script);
  }
  // 调用;
  loadScriptString("function sayHi(){alert('hi')}");

二 动态样式

为了动态的加载样式表,比如切换网站皮肤;
样式有两种方式进行加载,一种是<link>标签,一种是<style>标签;

1.动态引入link文件

var flag = true;
  if(flag){
    loadStyles('basic.css');







// 调用函数,引入路径;
  }
  function loadStyles(url){
    var link = document.createElement('link');
    link.rel = 'stylesheet';
    link.type = 'text/css';
    link.href = url;
    document.getElementsByTagName('head')[0].appendChild(link);
  }

2.动态执行style代码

var flag = true;
  if(flag){
    var style = docuemnt.createElement('style');
    style.type = 'text/css';
    document.getElementsByTagName('head')[0].appendChild(style);
    insertRule(document.styleSheets[0],'#box','background:red',0);
  }
  function insertRule(sheet,selectorText,cssText,position){
    // 如果是非IE;
    if(sheet.insertRule){
      sheet.insertRule(selectorText+"{"+cssText+"}",position);
    // 如果是IE;
    }else if(sheet.addRule){
      sheet.addRule(selectorText,cssText,position);
    }
  }
// 动态执行style2
  function loadStyleString(css){
    var style = document.createElement("style");
    style.type = "text/css";
    try{
    // IE会报错;不允许向<style>元素添加子节点;
      style.appendChild(document.createTextNode(css));
    }catch(ex){
    // 此时,访问元素的StyleSheet属性,该属性有有一个cssText属性,可以接受CSS代码;
      style.styleSheet.cssText = css;
    }
    var head = document.getElementsByTagName("head")[0];
    head.appendChild(style);
  }
  // 调用;
  loadStyleString("body {background-color:red}");
Javascript 相关文章推荐
替代window.event.srcElement效果的可兼容性的函数
Dec 18 Javascript
jQuery实现的Div窗口震动效果实例
Aug 07 Javascript
javascript拖拽效果延伸学习
Apr 04 Javascript
浅析JS操作DOM的一些常用方法
May 13 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
Jun 08 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 Javascript
TypeScript实用技巧 Nominal Typing名义类型详解
Sep 23 Javascript
JavaScript DOM元素尺寸和位置
Apr 13 #Javascript
JavaScript DOM操作表格及样式
Apr 13 #Javascript
JavaScript DOM进阶方法
Apr 13 #Javascript
JavaScript DOM基础
Apr 13 #Javascript
JavaScript 浏览器对象模型BOM使用介绍
Apr 13 #Javascript
JavaScript 匿名函数和闭包介绍
Apr 13 #Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
Apr 13 #Javascript
You might like
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
印度在线杂货店:bigbasket
2018/08/23 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
摄影实习自我鉴定
2013/09/20 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
2014年部门工作总结
2014/11/12 职场文书
先进个人推荐材料
2014/12/29 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
电影开国大典观后感
2015/06/04 职场文书
旷工检讨书大全
2015/08/15 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL