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 相关文章推荐
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
jQuery阻止同类型事件小结
Apr 19 Javascript
JS(JQuery)操作Array的相关方法介绍
Feb 11 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
Mar 17 Javascript
vuejs2.0子组件改变父组件的数据实例
May 10 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
Vuex 快速入门(简单易懂)
Sep 20 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
Oct 26 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 Javascript
基于javascript的拖拽类封装详解
Apr 19 Javascript
antd 表格列宽自适应方法以及错误处理操作
Oct 27 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
python实现简易内存监控
2018/06/21 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
进修护士自我鉴定
2013/10/14 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
出国签证在职证明
2014/09/20 职场文书
就业推荐表导师评语
2014/12/31 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
关于JavaScript轮播图的实现
2021/11/20 Javascript