使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性能优化 创建文档碎片(document.createDocumentFragment)
Jul 13 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
javascript 在firebug调试时用console.log的方法
May 10 Javascript
jQuery文件上传插件Uploadify使用指南
Jun 05 Javascript
js获取数组的最后一个元素
Apr 14 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
JS中作用域和变量提升(hoisting)的深入理解
Oct 31 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
Vue项目打包部署到iis服务器的配置方法
Oct 14 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 Javascript
vue 使用原生组件上传图片的实例
Sep 08 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 print类函数使用总结
2010/06/25 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
Vue.js用法详解
2017/11/13 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
简单谈谈python中的语句和语法
2017/08/10 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
人力资源经理自我评价
2014/01/04 职场文书
服务之星获奖感言
2014/01/21 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
促销活动总结范文
2014/04/30 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL