第一百一十八节,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 文件 ...
随机推荐
- NetCat,在网络工具中有“瑞士军刀”美誉
nc命令详解 NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本.因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小).功能实用,被设计为一个简单.可 ...
- OAuth的一个.NET开源实现
从编译DotNetOpenAuth中学到的程序集强签名知识 OAuth的一个.NET开源实现,官方网站:http://dotnetopenauth.net/ . 从GitHub签出DotNetOpen ...
- vs中web配置可浏览json数据文件
在日常的前端开发中,我们会制作一些数据文件,常用的有后缀名为json的文件,但是vs在启动项目时,是不能浏览json文件的,常见的错误提示如下图所示 解决这个错误,只需要在web.config文件中配 ...
- web form中自定义HttpHandler仿mvc
web form中自定义HttpHandler仿mvc 前言 在mvc大行其道的今天,仍然有不少公司的项目还是使用web form来实现的(其实mvc也是基于web form的),如果要在项目中引入m ...
- resin-pro-4.0.34 服務器在windows环境下的配置
resin-pro-4.0.34 服務器在windows环境下的配置(轉載请注明作者:icelong) 到caucho網站上http://www.caucho.com/download/下載resin ...
- javascript生成自定义的arcgis simpletoolbar
javascript生成自定义的arcgis simpletoolbar 最近在学习ARCGIS for Javascript过程中,在ESRI的在线帮助上看见了这样一个示例,查看源码后,觉得左侧工具 ...
- 一步步学习Python-django开发-建立django数据库
上篇文章建立了一个空的网站.现在我们要准备正式我们的网站开发咯.那么开发的第一步是啥呢?当然是要确定做什么网站了.每个人的开发习惯可能不尽相同,有点可能是从前端开始设计,有的可能是从数据库开始设计(不 ...
- c# winform 在一个窗体中使用另一个窗体中TextBox控件的值——解决办法
[前提]一个winform应用程序项目中,窗体B,需要使用 窗体A 中一个TextBox控件的值,进行计算等操作. [解决方案] 1.在窗体A中定义:public static double a;// ...
- 最简单的linux内存清理方法
vmstat -s 查看剩余内存 然后用一下命令清理内存 echo 1 > /proc/sys/vm/drop_caches
- Python 3语法小记(五)字符串
Python 3 的源码的默认编码方式为 UTF-8 在Python 3,所有的字符串都是使用Unicode编码的字符序列. utf-8 是一种将字符编码成字节序列的方式.字节即字节,并非字符.字符在 ...