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 相关文章推荐
javascript 动态调整图片尺寸实现代码
Dec 28 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
Jun 19 Javascript
jQuery函数的等价原生函数代码示例
May 27 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
js实现创建删除html元素小结
Sep 30 Javascript
JS获取复选框的值,并传递到后台的实现方法
May 30 Javascript
PHP+jquery+ajax实现分页
Dec 09 Javascript
微信小程序 scroll-view实现锚点滑动的示例
Dec 06 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
JavaScript中import用法总结
Jan 20 Javascript
小程序Scroll-view上拉滚动刷新数据
Jun 21 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 JSON 数据解析代码
2010/05/26 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
php实现单链表的实例代码
2013/03/22 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
python实现低通滤波器代码
2020/02/26 Python
基于python检查矩阵计算结果
2020/05/21 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
推普周国旗下讲话稿
2014/09/21 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
黄埔军校观后感
2015/06/10 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP