JavaScript学习10:动态加载脚本和样式

我们在写Web页面的时候,需要引入很多的JavaScript脚本文件和CSS样式文件,尤其是在网站需求量很大的时候,脚本的需求量也随之变大,这样一来,网站的性能就会大打折扣,因此就出现了动态加载的概念,即在需要的时候才去加载对应的脚本和样式。下面我们就来看看如何实现动态加载。

 动态脚本:

先来看一个动态加载js文件的代码示例:

//动态加载JS
var flag=false ;
if(flag){
	loadScript('browserdetect.js');
}
function loadScript(url){
	var script =document.createElement('script');
	script.type='text/javascript';
	script.src=url;
	document.getElementsByTagName('head')[0].appendChild(script);
}

如此一来,我们只需控制flag的值就可以控制js脚本文件是否加载到当前页面中。

再来看一个动态执行js的示例:

//动态执行JS
var flag=true ;
if(flag){
	executeScript();
}
function executeScript(){
	var script =document.createElement('script');
	script.type='text/javascript';
	var text=document.createTextNode("alert('Lian')");
	script.appendChild(text);
	document.getElementsByTagName('head')[0].appendChild(script);
}

 动态样式

我们肯定都对各种换肤功能司空见惯了,但是你肯定没想过换肤是如何实现的。我也是学到这块才恍然大悟,原来看起来蛮高级的换肤功能竟然如此简单:只需换一个CSS样式即可。

那我们就来看看网页的样式是如何动态加载的。通常样式表有两种方式进行加载,一种是<link>标签,一种是<style>标签。因此给出两种方式的代码示例,来说明如何动态加载样式。

使用link标签加载,和上面提到的动态加载js脚本没什么两样,不再多说。

<span style="font-size:18px;">//动态执行link
var flag=true;
if(flag){
	loadStyle('basic.css');
}
function loadStyle(url){
	var link=document.createElement('link');
	link.rel='stylesheet';
	link.type ='text/css';
	link.href=url;
	document.getElementsByTagName('head')[0].appendChild(link);
}</span>

比较麻烦点的是使用style来改变样式,因为涉及兼容性问题,所以在执行的时候,需要根据浏览器支持的类型,选择相应的函数来执行这个过程,看下代码示例

<span style="font-size:18px;">//动态执行style
var flag=true;
if(flag){
	var style=document.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);
	}else if(sheet.addRule){ //如果是IE
		sheet.addRule(selectorText,cssText,position);
	}
}</span>

小结一下:记得老师曾经反复强调,如无必要,勿增实体。同样在程序设计的过程中也一样,我们在程序启动时,就加载很多的东西,势必会影响程序的性能,因此我们要学会在需要的时候,一点一点的进行添加,有点装饰模式的赶脚,同时也是一个灵活性的体现,虽然是一个小的知识点,但是运用好了,是有大用处的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-11 01:41:38

JavaScript学习10:动态加载脚本和样式的相关文章

JavaScript的DOM_动态加载脚本和样式

一.动态加载脚本 当网站需求变大,脚本的需求也逐步变大.我们就不得不引入太多的 JS 脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本. 1.动态加载js文件 比如:我们想在需要检测浏览器的时候,再引入检测文件. <script type="text/javascript"> window.onload = function(){ alert(typeof BrowserDetect); } var flag = true; //设置 true

第一百一十八节,JavaScript,动态加载脚本和样式

JavaScript,动态加载脚本和样式 一动态脚本 当网站需求变大,脚本的需求也逐步变大.我们就不得不引入太多的JS脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本. 比如:我们想在需要检测浏览器的时候,再引入检测文件. 1动态加载js文件 window.onload = function() { //window.onload事件,等待html执行完成后,执行匿名函数 //判断要加载的文件是否加载成功 alert(typeof BrowserDetect); }

Javascript动态加载脚本与样式

一   动态加载js 动态加载js的必要性: 1.    项目越做越大,大量引入的js会导致性能问题: 2.   实际项目可能会遇到:需要在一个js文件中引用另一个js文件中的函数,可是另一个函数有没有办法在页面中通过该<script>标签加载. 网上看了几篇博客大概有三种方式: 1.直接document.write<script language="javascript">    document.write("<script src='jia

动态加载脚本和样式

当网站需求变大,脚本的加载就很关键了. 动态加载能减少不必要的脚本加载,提高js执行速度. 首先,动态加载JS脚本文件demo.js.代码如下: window.unload=function(){ var flag=true; if(flag){ var script=ducument.createElement('script'); script.type='text/javascrpt'; script.src='demo.js'; docement.getElementsByTagName

动态加载脚本和样式(转)

一.元素位置 这次补充一个 DOM 的方法:getBoundingClientRect().这个方法返回一个矩形对象,包含四个属性:left.top.right和 bottom.分别表示元素各边与页面上边和左边的距离. var box = document.getElementById('box');//获取元素 alert(box.getBoundingClientRect().top);//元素上边距离页面上边的距离 alert(box.getBoundingClientRect().rig

JS 动态加载脚本 执行回调[transfer]

JS 动态加载脚本 执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解怎么在js中加载其它js文件并在加载完成后执行回调函数. 我们可以动态的创建 <script> 元素,然后通过更改它的 src 属性来加载脚本,但是怎么知道这个脚本文件加载完成了呢,因为我们有些函数需要在脚本加载完成生效后才能开始执行. 经过对网络上资源的搜索,我发现

JS 动态加载脚本 执行回调

JS 动态加载脚本  执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解怎么在js中加载其它js文件并在加载完成后执行回调函数. 我们可以动态的创建 <script> 元素,然后通过更改它的 src 属性来加载脚本,但是怎么知道这个脚本文件加载完成了呢,因为我们有些函数需要在脚本加载完成生效后才能开始执行. 经过对网络上资源的搜索,我发

js实现动态加载脚本的方法实例汇总

本文实例讲述了js实现动态加载脚本的方法.分享给大家供大家参考,具体如下: 最近公司的前端地图产品需要做一下模块划分,希望用户用到哪一块的功能再加载哪一块的模块,这样可以提高用户体验. 所以到处查资料研究js动态脚本的加载,不过真让人伤心啊!,网上几乎都是同一篇文章,4种方法,讨厌其中拷贝别人成果的人,也不加个原文的链接.哎!关键是最后一种方法还有点错误.经过两天的研究查阅资料,在这里和大家分享一下. 首先我们需要一个被加载的js文件,我在一个固定文件夹下创建了一个package.js,打开后在

JS学习之动态加载script和style样式

前提:我们可以把一个网页里面的内容理解为一个XML或者说网页本身也就是一个XML文档,XML文档都有很特殊的象征:"标签"也叫"节点".我们都知道一个基本的网页格式是 <!DOCTYPE /> <head></head> <body><body /> 这些是最基本的形态,但是其实它省略了最外面的一个标签<document>. <document> <!DOCTYPE />