使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 相关文章推荐
jQuery中获取Radio元素值的方法
Jul 02 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
Aug 06 Javascript
简单实用的反馈表单无刷新提交带验证
Nov 15 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
自己使用jquery写的一个无缝滚动的插件
Apr 30 Javascript
禁用Enter键表单自动提交实现代码
May 22 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
Aug 20 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
vue 将页面公用的头部组件化的方法
Dec 18 Javascript
Angular 封装并发布组件的方法示例
Apr 19 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
Jul 27 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 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
PHP中Array相关函数简介
2016/07/03 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
python实现windows壁纸定期更换功能
2019/01/21 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Django ModelForm操作及验证方式
2020/03/30 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
便利店的创业计划书
2014/01/15 职场文书
班主任班级寄语大全
2014/04/04 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
MySQL 视图(View)原理解析
2021/05/19 MySQL
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers
app场景下uniapp的扫码记录
2022/07/23 Java/Android