十三郎的IT生活

 

Javascript:动态载入Javascript 和CSS 文件

常见的载入 Javascript (.js) 和CSS (.css)文件的方法一般是在网页的<HEAD>部分添加一个引用。如下所示:

Code (xHtml)
  1. <head>
  2. <script type="text/javascript" src="myjs.js"></script>
  3. <link rel="stylesheet" type="text/css" href="main.css" />
  4. </head>

在大多数情况下,这样操作完全可以满足我们的需要,但是在 Ajax 应用越来越多的今天,你可能需要一种能够动态加载 *.js*.css 文件的方法。

简单而言,要动态载入一个.js 文件或.css 文件,首先需要利用DOM 方法为文档创建一个"script" 或"link" 元素,然后为它们指定合适的属性,最后利用element.appendChild()方法将元素添加到文档树中理想的位置。以下是实现代码:

Code (Javascript)
  1. function LoadJsCssFile(filename, filetype){
  2. if (filetype=="js"){ //如果是.js文件
  3. var fileref=document.createElement('script');
  4. fileref.setAttribute("type","text/javascript");
  5. fileref.setAttribute("src",filename);
  6. }
  7. else if (filetype=="css"){ //如果是.css文件
  8. var fileref=document.createElement("link");
  9. fileref.setAttribute("rel", "stylesheet");
  10. fileref.setAttribute("type", "text/css");
  11. fileref.setAttribute("href",filename);
  12. }
  13. if (typeof fileref != "undefined")
  14. document.getElementsByTagName("head")[0].appendChild(fileref)
  15. }
  16.  
  17. LoadJsCssFile("myscript.js", "js"); //动态载入.js 文件
  18. LoadJsCssFile("javascript.php", "js"); //将".php" 文件作为.js 文件动态载入
  19. LoadJsCssFile("main.css", "css"); //动态载入.css 文件

此外,还可以添加一个新方法,在载入.js 或.css 文件前判断此文件是否已经加载,从而避免重复加载。代码如下:

Code (Javascript)
  1. var filesadded = "" //已经加载的文件列表
  2.  
  3. function CheckLoadJsCssFile(filename, filetype){
  4. if (filesadded.indexOf("["+filename+"]")==-1){
  5. LoadJsCssFile(filename, filetype);
  6. filesadded += "["+filename+"]"; //从表单中加载的文件列表
  7. }
  8. else
  9. alert('该文件已经添加!');
  10. }
  11.  
  12. CheckLoadJsCssFile("myscript.js", "js") //加载成功
  13. CheckLoadJsCssFile("myscript.js", "js") //文件存在,不再加载

posted on 2008-01-15 15:16 十三郎 阅读(1665) 评论(1)  编辑 收藏 引用 所属分类: JS

只有注册用户登录后才能发表评论。

导航

常用链接

留言簿(5)

随笔分类

文章分类

积分与排名