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 相关文章推荐
在UpdatePanel内jquery easyui效果失效的解决方法
Apr 11 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 Javascript
在AngularJS中使用jQuery的zTree插件的方法
Apr 21 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
使用webpack构建应用的方法步骤
Mar 04 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 Javascript
Vue使用localStorage存储数据的方法
May 27 Javascript
vue 组件开发原理与实现方法详解
Nov 29 Javascript
vue基于better-scroll实现左右联动滑动页面
Jun 30 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
Sep 08 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
一个程序下载的管理程序(一)
2006/10/09 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
利用Python如何生成随机密码
2016/04/20 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Python tornado上传文件的功能
2020/03/26 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
老师的检讨书
2014/02/23 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL