使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 相关文章推荐
js调用后台servlet方法实例
Jun 09 Javascript
jQuery on()方法使用技巧详解
Apr 16 Javascript
JavaScript获取两个数组交集的方法
Jun 09 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
Nov 26 Javascript
jQuery+Ajax实现无刷新操作
Jan 04 Javascript
Javascript中prototype的使用详解
Jun 18 Javascript
JavaScript字符集编码与解码详谈
Feb 02 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 Javascript
vue组件父与子通信详解(一)
Nov 07 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
原生JS 实现的input输入时表格过滤操作示例
Aug 03 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 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
其他功能
2006/10/09 PHP
如何使用PHP中的字符串函数
2006/11/24 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
快速入门python学习笔记
2017/12/06 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
Python配置文件处理的方法教程
2019/08/29 Python
python Tensor和Array对比分析
2020/01/08 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
公司年会晚宴演讲稿
2014/01/06 职场文书
考试没考好检讨书
2014/01/31 职场文书
大学生秋游活动方案
2014/02/17 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS