第一百一十八节,JavaScript,动态加载脚本和样式
JavaScript,动态加载脚本和样式
一动态脚本
当网站需求变大,脚本的需求也逐步变大。我们就不得不引入太多的JS脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本。
比如:我们想在需要检测浏览器的时候,再引入检测文件。
1动态加载js文件
window.onload = function() { //window.onload事件,等待html执行完成后,执行匿名函数
//判断要加载的文件是否加载成功
alert(typeof BrowserDetect);
};
//注意:判断加载写在,window.onload外面,也就是先加载代码,不然网页执行后在生成<script>元素标签就连接不了
//设置一个变量,值为true再加载,值为false不加载文件
var flag = true;
if (flag) { //判断flag值为真时,执行加载js文件函数
loadScript('browserdetect.js');
}
//定义加载js函数,接收一个参数要加载的js我们路径名称
function loadScript(url) {
//创建<script>元素标签
var script = document.createElement('script');
//向标签添加属性
script.type = 'text/javascript';
//向标签添加属性
script.src = url;
//向标签添加属性
script.charset = 'utf-8';
//通过标签名称获取到第一个<head>标签,将新创建<script>元素标签添加到<head>标签的子标签末尾
document.getElementsByTagName('head')[0].appendChild(script);
}
2多态加载js代码
//注意:判断加载写在,window.onload外面,也就是先加载代码,不然网页执行后在生成<script>元素标签就连接不了
//设置一个变量,值为true再加载,值为false不加载代码
var flag = true; if (flag) { //判断flag值为真时,执行加载js代码函数
loadScript(); //执行函数
} //定义加载js代码函数,
function loadScript() {
//创建一个script标签
var script = document.createElement('script');
//向标签添加属性
script.type = 'text/javascript';
//向标签添加属性
script.charset = 'utf-8';
//要执行的代码
script.text = "alert('你好')";
//将script标签添加到第一个head标签的子标签末尾
document.getElementsByTagName('head')[0].appendChild(script);
}
PS:当然,如果不支持text,那么就可以针对不同的浏览器特性来使用不同的方法。这里就忽略写法了。
二动态样式
为了动态的加载样式表,比如切换网站皮肤。样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。
1动态加载css文件
//动态执行link,加载css文件
var flag = true; //设置一个变量,值为true加载文件,false不加载 //判断执行函数
if (flag) {
loadStyles('1.css'); //执行加载文件函数
} function loadStyles(url) { //接收一个参数,css文件路径名称
//创建link标签元素
var link = document.createElement('link');
//添加link标签属性
link.rel = 'stylesheet';
//添加link标签属性
link.type = 'text/css';
//添加link标签属性
link.href = url;
//将新创建的link标签,添加到第一个head标签的子元素末尾
document.getElementsByTagName('head')[0].appendChild(link);
}
2动态加载css代码
//动态加载css代码
var flag = true; //设置一个变量,值为true加载样式代码,值为false不加载 if (flag) { //判断flag为真执行里面代码
//创建一个style元素标签
var style = document.createElement('style');
//添加style元素属性
style.type = 'text/css';
//获取到第一个head标签,将新创建的style元素标签添加到head标签的子元素末尾
document.getElementsByTagName('head')[0].appendChild(style);
//执行样式函数
insertRule(document.styleSheets[0], '#box', 'background:red', 0);
} function insertRule(sheet, selectorText, cssText, position) { //执行函数,接收4个参数,参数1css样式对象,参数2选择器名称,参数3样式代码,参数4要添加的位置
//如果是非IE
if (sheet.insertRule) { //判断如果为真
//通过insertRule方法向样式表对象添加一个选择器
sheet.insertRule(selectorText + "{" + cssText + "}", position);
//如果是IE
} else if (sheet.addRule) { //判断如果为真
//通过addRule方法向样式表对象添加一个选择器
sheet.addRule(selectorText, cssText, position);
}
}
第一百一十八节,JavaScript,动态加载脚本和样式的更多相关文章
- JavaScript的DOM_动态加载脚本和样式
一.动态加载脚本 当网站需求变大,脚本的需求也逐步变大.我们就不得不引入太多的 JS 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本. 1.动态加载js文件 比如:我们 ...
- JavaScript动态加载script方式引用百度地图API 拓展---JavaScript的Promise
上一篇博客JavaScript动态加载script方式引用百度地图API,Uncaught ReferenceError: BMap is not defined 这篇文章中我接触到一个新的单词:Pr ...
- JavaScript动态加载资源
//动态加载样式 function dynamicLoadingCss(path){ if(!path || path.length === 0){ return false; } var head ...
- JavaScript动态加载js文件
/********************************************************************* * JavaScript动态加载js文件 * 说明: * ...
- JS 动态加载脚本 执行回调
JS 动态加载脚本 执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件 ...
- js动态加载脚本
最近公司的前端地图产品需要做一下模块划分,希望用户用到哪一块的功能再加载哪一块的模块,这样可以提高用户体验. 所以到处查资料研究js动态脚本的加载,不过真让人伤心啊!,网上几乎都是同一篇文章,4种方法 ...
- js实现动态加载脚本的方法实例汇总
本文实例讲述了js实现动态加载脚本的方法.分享给大家供大家参考,具体如下: 最近公司的前端地图产品需要做一下模块划分,希望用户用到哪一块的功能再加载哪一块的模块,这样可以提高用户体验. 所以到处查 ...
- jquery动态加载脚本
如果你使用的是jQuery,它里面有一个内置的方法可以用来加载单个JS文件.当你需要延迟加载一些js插件或其它类型的文件时,可以使用这个方法. 一.jQuery getScript()方法加载java ...
- 用JavaScript动态加载CSS和JS文件
本文转载自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/14/2248451.html 今天项目中需要用到动态加载 CSS 文件 ...
随机推荐
- Dynamic CRM 2013 on Windows Azure VM
三个A2 Size的VM,运行Windows Server 2012: AD Server,SQL Server,App Server 将AD Server的ip地址填写到Windows Azure虚 ...
- ASP.NET基础之HttpHandler学习
ASP.NET基础之HttpHandler学习 经过前两篇[ASP.NET基础之HttpModule学习]和[ASP.NET基础之HttpContext学习]文章的学习我们对ASP.NET的基础内容有 ...
- 电影管理器之XML存储电影信息数据
电影管理器之XML存储电影信息数据 但凡管理器之类的软件,存储数据是必不可少的.存储数据的话,有几种选择.一是用数据库,把数据存储到数据库里:一是用文本文件,把数据存储到文本文件里:一种是利用XML文 ...
- CSS 实现的各种球体效果
CSS 实现的各种球体效果[附在线演示] CSS 可以实现很多你想不到的效果,今天我们来尝试使用 CSS 实现各种球体效果.有两种方法可以实现,第一种是使用大量的元素创建实际的 3D 球体,这种方法有 ...
- jQuery Mobile (整合版)
jQuery Mobile (整合版) 前言 为了方便大家看的方便,我这里将这几天的东西整合一下发出. 里面的例子请使用手机浏览器查看. 什么是jQuery Mobile? jquery mobile ...
- 【详细贴】Ubuntu Linode搭建海外策略路由VPN IPSec+L2TP(一)
对于码农来说,Google上搜索,stackoverflow上提问,twitter上交流,这样的国际化开放平台才是码农成长的空间.但是,目前遇到的一些现实的困难,无可避免的带来一些麻烦,不过这难不倒我 ...
- Linux内核 hlist_head/hlist_node结构解析
内核中的定义: struct hlist_head { struct hlist_node *first;}; struct hlist_node { struct hlist_node ...
- 使用ThreadGroup模拟线程池
参考文章: [1]创建线程池 http://sunnylocus.iteye.com/blog/223327?page=2#comments [2]线程组ThreadGroup http://hub ...
- Linux编程之给你的程序开后门
这里说的"后门"并不是教你做坏事,而是让你做好事,搭建自己的调试工具更好地进行调试开发.我们都知道,当程序发生异常错误时,我们需要定位到错误,有时我们还想,我们在不修改程序的前提下 ...
- C语言之字符集、ASCII码和sizeof运算符
一 字符集和ASCII码 结论:字符本质上也是一个整数,每个字符都有唯一一个与之对应的整数, 比如说小写的a对应97,b对应98,c对应99,大写的A对应65,B对应66,C对应67 所以字符对应的那 ...