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中“+=”的应用
Feb 02 Javascript
js模拟类继承小例子
Jul 17 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
jQuery实现为图片添加镜头放大效果的方法
Jun 25 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
May 09 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
JavaScript 函数节流详解及方法总结
Feb 09 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
vue二级菜单导航点击选中事件的方法
Sep 12 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
Nov 05 Javascript
关于自定义Egg.js的请求级别日志详解
Dec 12 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
substr()函数中文版
2006/10/09 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
PHP多进程编程实例详解
2017/07/19 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
数控个人求职信范文
2014/02/03 职场文书
趣味运动会加油词
2015/07/18 职场文书
卫生主题班会
2015/08/14 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
css样式important规则的正确使用方式
2022/06/10 HTML / CSS
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers
Go语言编译原理之源码调试
2022/08/05 Golang