动态加载外部CSS与JS文件

所属分类: 网页制作 / CSS 阅读数: 1530
收藏 0 赞 0 分享

  动态加载外部CSS与JS文件使用dom创建<script>或者<link>标签,并给他们附加属性,如type等。然后使用appendChild方法把标签绑定到另一个标签,一般是绑到<head>。
  应用:
  1、提高代码的复用,减少代码量;
  2、添加一个javascript控制器和 session可以实现动态改变页面样式;
  3、由于是页面是从上到下依次加载文件的,并且边加载边解释,所以可以添加javascript控制器控制页面文件的加载顺序,如先加载css布局文件,再显示有图片的css美化文件,之后再加载大的falsh文件,或者安内容的重要性来加载。
  To load a .js or .css file dynamically, in a nutshell, it means using DOM methods to first create a swanky new "script" or "LINK" element, assign it the appropriate attributes, and finally, use element.appendChild() to add the element to the desired location within the document tree. It sounds a lot more fancy than it really is. Lets see how it all comes together:

  接下来的工作是绑定到<head>标签。绑定的时候有一个问题就是同一个文件有可能被我们绑定两次,绑定两次浏览器也不会出现异常,但是效率就低了。为了避免
  这种情况我们可以新增一个全局数组变量,把绑定的文件名字保存在里面,每次绑定前先检查一下是否已经存在,如果存在就提示已经存在,如果不存在就绑定。
document.getElementsByTagName("head")[0].appendChild(fileref)
  By referencing the HEAD element of the page first and then calling appendChild(), this means the newly created element is added to the very end of the HEAD tag. Furthermore, you should be aware that no existing element is harmed in the adding of the new element- that is to say, if you call loadjscssfile("myscript.js", "js") twice, you now end up with two new "script" elements both pointing to the same Javascript file. This is problematic only from an efficiency standpoint, as you'll be adding redundant elements to the page and using unnecessary browser memory in the process. A simple way to prevent the same file from being added more than once is to keep track of the files added by loadjscssfile(), and only load a file if it's new:
var filesadded="" //保存已经绑定文件名字的数组变量
function checkloadjscssfile(filename, filetype){
if (filesadded.indexOf("[" filename "]")==-1){// indexOf判断数组里是否有某一项
loadjscssfile(filename, filetype)
filesadded ="[" filename "]" //把文件名字添加到filesadded
}
else
alert("file already added!")//如果已经存在就提示
}
checkloadjscssfile("myscript.js", "js") //success
checkloadjscssfile("myscript.js", "js") //redundant file, so file not added
  Here I'm just crudely detecting to see if a file that's set to be added already exists within a list of added files' names stored in variable filesadded before deciding whether to proceed or not.
  Ok, moving on, sometimes the situation may require that you actually remove or replace an added .js or .css file. Lets see how that's done next.
function loadjscssfile(filename, filetype){
if (filetype=="js"){ //判断文件类型
var fileref=document.createElement('script')//创建标签
fileref.setAttribute("type","text/javascript")//定义属性type的值为text/javascript
fileref.setAttribute("src", filename)//文件的地址
}
else if (filetype=="css"){ //判断文件类型
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
loadjscssfile("myscript.js", "js") //打开页面时浏览器动态的加载文件
loadjscssfile("javascript.php", "js") // 打开页面时浏览器动态的加载"javascript.php" ,
loadjscssfile("mystyle.css", "css") //打开页面时浏览器动态的加载.css 文件
更多精彩内容其他人还在看

IE7下父元素及子元素的隐藏顺序不当带来的display:none出现BUG

IE7下,先隐藏父元素,后隐藏子元素,再显示父元素,被隐藏的子元素重叠区域下面, 存在另一个可见的元素,则该display:none的子元素出现BUG;接下来介绍一下发生经过,感兴趣的朋友可以了解下啊,希望本文对你有帮助
收藏 0 赞 0 分享

定义css设备类型-Media Queries图表简介及使用方法

CSS3完美地解决了让同一个网站同时适应完全不同尺寸的屏幕这些问题;css3提出的MediaQueries解决了为网站设计不同的CSS样式文件,如打印样式表文件,手机样式文件,电脑样式文件这些问题,感兴趣的朋友可以了解下哦
收藏 0 赞 0 分享

纯css3无js实现的Android Logo(有简单动画)

用纯css3无js实现的Android Logo,带有简单的动画,主要运用css3的transform,transition,结构与样式写的很清晰,一目了然,有这方面需求的朋友可以了解下哦,希望本文对你有所帮助
收藏 0 赞 0 分享

checkbox与文字混排无法对齐导致不美观的解决方法

checkbox与文字不对齐会影响美观本文将将介绍解决方法:需要checkbox居中对其 然后文字也要居中对齐,checkbox在FF和IE下表现不一样;不管你怎么设置默认的margin和padding是无法去掉的
收藏 0 赞 0 分享

IE6下CSS多类选择符优先级不起作用的bug分析及解决方法

IE6,这个前端开发的梦魇总是在你不经意的时候给你捅一刀,在ie6环境下CSS多类选择符优先级不起作用,多么的令人气愤啊,经过测试:IE6下这种类组合的优先级不如单个类, 感兴趣的朋友可以了解下啊
收藏 0 赞 0 分享

CSS优先级和!important与IE6的BUG讨论及解决方案

本来我对他谁的ie6不支持!important也没什么异议,可是正好在前几天正好用个这个!important属性解决了一个样式优先级的问题,而且是支持ie6的,这是为什么呢?到底ie6支不支持!important呢
收藏 0 赞 0 分享

使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE

跨浏览器兼容性是网页制作永恒的难题,所以在未来一段时间里,样式表里的-moz-,-webkit-,(-ms-,-o-)等等前缀将长期存在,除了考虑各家浏览器之间的兼容性外,我们还有必要向前兼容老式浏览器
收藏 0 赞 0 分享

css实现div自动添加滚动条(图片或文字等超出时显示)

css实现div自动添加滚动条比较实用的功能,当图片或文字超出div所规定的宽或高时,会自动出现滚动条,这一点还是比较有利于用户体验的,本文整理了一些实现自动滚动条的方法,感兴趣的朋友不妨参考下,或许对你认识css设置滚动条有所帮助
收藏 0 赞 0 分享

兼容ie的内阴影和外阴影实现效果及测试代码

关于阴影这个效果,IE和W3C都有实现的代码;本文介绍一下W3C实现阴影效果与ie阴影效果的实现与IE的模糊效果的实现,感兴趣的朋友可以了解下,希望本文对你有所帮助
收藏 0 赞 0 分享

IE滤镜与CSS3效果(详细整理分享)

最近的项目都会接触CSS3,万恶的IE却不支持,搜索了一下,发现IE的滤镜挺管用,貌似W3C正在把滤镜标准化,抽时间整理了一下IE的滤镜效果记住请用IE浏览哦,感兴趣的朋友可以了解一下,希望本文对你有所帮助
收藏 0 赞 0 分享
查看更多