国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

使javascript也能包含文件

2019-11-21 02:29:03
字體:
來源:轉載
供稿:網友

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()之后調用加載的文件里的函數了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 京山县| 綦江县| 宝鸡市| 堆龙德庆县| 武夷山市| 壤塘县| 新平| 濮阳市| 孙吴县| 宁海县| 建宁县| 南城县| 韶关市| 当涂县| 建昌县| 五台县| 麟游县| 颍上县| 开鲁县| 砚山县| 海伦市| 东兴市| 新密市| 印江| 渑池县| 呼图壁县| 南丰县| 石城县| 彭州市| 阜新| 朝阳区| 望奎县| 正蓝旗| 分宜县| 定安县| 济阳县| 务川| 马鞍山市| 兴和县| 临清市| 健康|