使javascript也能包含文件


Posted in Javascript onOctober 26, 2006

javascript功能强大,但一个问题是它不能包含其它的js文件,而其它非脚本语言却基本都是有这个功能的,不得不觉得有点遗憾。穷则思变,越来越发现不动态导入文件会严重加大加载页面的时间,经过实验,发现了一个办法,利用xhtml来实现这个功能,下面的函数就可以动态导入javascript文件和css样式文件: 

function $import(path,type,title){ 
 var s,i; 
 if(type=="js"){ 
  var ss=document.getElementsByTagName("script"); 
  for(i=0;i<ss.length;i++){ 
   if(ss[i].src && ss[i].src.indexOf(path)!=-1)return; 
  } 
  s=document.createElement("script"); 
  s.type="text/javascript"; 
  s.src=path; 
 }else if(type=="css"){ 
  var ls=document.getElementsByTagName("link"); 
  for(i=0;i<ls.length;i++){ 
   if(ls[i].href && ls[i].href.indexOf(path)!=-1)return; 
  } 
  s=document.createElement("link"); 
  s.rel="alternate stylesheet"; 
  s.type="text/css"; 
  s.href=path; 
  s.title=title; 
  s.disabled=false; 
 } 
 else return; 
 var head=document.getElementsByTagName("head")[0]; 
 head.appendChild(s); 
}

对于样式文件,默认导入后是立即生效的,这有可能会导致和前面一种选定样式效果重叠,造成混乱。所以在我的blog中是使用下面的函数来实现样式的切换功能: 

 
function setStyle(title) { 
 var i, links,eflag=false; 
 links = document.getElementsByTagName("link"); 
 for(i=0; links[i]; i++) { 
  if(links[i].getAttribute("rel").indexOf("style") != -1 && links[i].getAttribute("title")) { 
   links[i].disabled = true; 
   if(links[i].getAttribute("title").indexOf(title) != -1){links[i].disabled = false;eflag=true;} 
  } 
 } 
 if(!eflag){ 
  $import("skin/"+title+"/default.css","css",title); 
  setStyle(title); 
 } 
}

最后,说明一下,因为javascript文件是需要从远程加载的,所以有人可能会问在调用$import()函数后,是立即执行$import()后面的语句,还是等加载完以后再执行其后的语句。我粗略试验了一下,发现是等加载完后再执行后面的语句的,而且如果加载的js里有立即执行的代码,那么它会先于$import()后面的语句执行。这也是我们想要的结果,因为这样就可以在$import()之后调用加载的文件里的函数了。
Javascript 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
Mar 10 Javascript
IE8 原生JSON支持
Apr 13 Javascript
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
JavaScript限定复选框的选择个数示例代码
Aug 25 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
Jan 09 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
Sep 01 Javascript
Vue.js一个文件对应一个组件实践
Oct 27 Javascript
js css自定义分页效果
Feb 24 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
Sep 30 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
Dec 13 Javascript
JSONObject与JSONArray使用方法解析
Sep 28 Javascript
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 #Javascript
如何用javascript控制上传文件的大小
Oct 26 #Javascript
动态改变textbox的宽高的js
Oct 26 #Javascript
js传值 判断
Oct 26 #Javascript
点击广告后才能获得下载地址
Oct 26 #Javascript
PJBlog插件 防刷新的在线播放器
Oct 25 #Javascript
PJ Blog修改-禁止复制的代码和方法
Oct 25 #Javascript
You might like
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
在Python中使用元类的教程
2015/04/28 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
详解Python的三种拷贝方式
2020/02/11 Python
Python中if有多个条件处理方法
2020/02/26 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
完美主义个人的自我评价
2014/02/17 职场文书
《落花生》教学反思
2014/02/25 职场文书
学习经验交流会主持词
2014/04/01 职场文书
一年级学生期末评语
2014/04/21 职场文书
建材投资建议书
2014/05/16 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
爱国主义电影观后感
2015/06/18 职场文书
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技