使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 相关文章推荐
javascript 获取页面的高度及滚动条的位置的代码
May 06 Javascript
jquery随机展示头像代码
Dec 21 Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 Javascript
JavaScript基础知识之方法汇总结
Jan 24 Javascript
js表单验证实例讲解
Mar 31 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
ionic2打包android时gradle无法下载的解决方法
Apr 05 Javascript
微信小程序 input输入及动态设置按钮的实现
Oct 27 Javascript
浅谈vue,angular,react数据双向绑定原理分析
Nov 28 Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
javascript中的闭包概念与用法实践分析
Jul 26 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开源建站平台小结
2010/04/22 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
python tornado微信开发入门代码
2018/08/24 Python
PyTorch中的Variable变量详解
2020/01/07 Python
python线程join方法原理解析
2020/02/11 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
事假请假条范文
2014/04/11 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
物理学专业自荐信
2014/06/11 职场文书
法学求职信
2014/06/22 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
单位介绍信格式
2015/01/31 职场文书
兵马俑的导游词
2015/02/02 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
公司保密管理制度
2015/08/04 职场文书
团结主题班会
2015/08/13 职场文书
早上好问候语大全
2015/11/10 职场文书
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js