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 相关文章推荐
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
js中 javascript:void(0) 用法详解
Aug 11 Javascript
js利用正则表达式检验输入内容是否为网址
Jul 05 Javascript
javascript中href和replace的比较(详解)
Nov 25 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
JavaScript基础之AJAX简单的小demo
Jan 29 Javascript
jQuery初级教程之网站品牌列表效果
Aug 02 jQuery
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 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
php xfocus防注入资料
2008/04/27 PHP
php UBB 解析实现代码
2011/11/27 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
Python类定义和类继承详解
2015/05/08 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
python3爬虫之设计签名小程序
2018/06/19 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
django rest framework 过滤时间操作
2020/07/12 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
Pycharm github配置实现过程图解
2020/10/13 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
酒店实习个人鉴定
2013/12/07 职场文书
三峡人家导游词
2015/01/31 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
违规违纪检讨书范文
2015/05/06 职场文书