最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

動態(tài)加載JavaScript文件的兩種方法

 更新時間:2016年04月22日 09:18:19   作者:極道先生  
第一種利用ajax方式,第二種是動靜創(chuàng)建一個script標簽,配置其src屬性,經(jīng)過把script標簽拔出到頁面head來加載js,感樂趣的網(wǎng)友可以看下

這篇文章主要為大家詳細介紹了動態(tài)加載JavaScript文件的兩種方法,感興趣的小伙伴們可以參考一下
第一種便是利用ajax方式,把script文件代碼從背景加載到前臺,而后對加載到的內(nèi)容經(jīng)過eval()實施代碼。第二種是,動靜創(chuàng)建一個script標簽,配置其src屬性,經(jīng)過把script標簽插入到頁面head來加載js,相當于正在head中寫了一個<script src="..."></script>,只可是這個script標簽是用js動靜創(chuàng)建的
比喻說是我們要動靜地加載一個callbakc.js,我們就必要多么一個script標簽:
代碼如下:  

復制代碼 代碼如下:
<script type="text/javascript" src="call.js"></script>

如下代碼就是如何通過js來創(chuàng)建這個標簽(并且加到head中): 
代碼如下:

var head= document.getElementsByTagName('head')[0]; 
var script= document.createElement('script'); 
script.type= 'text/javascript'; 
script.src= 'call.js'; 
head.appendChild(script); 

當加載完call.js, 我們就要調(diào)用其中的方法。不過在header.appendChild(script)之后我們不能馬上調(diào)用其中的js。因為瀏覽器是異步加載這個js的,我們不知道他什么時候加載完。然而我們可以通過監(jiān)聽事件的辦法來判斷helper.js是否加載完成。(假設call.js中有一個callback方法) 代碼如下:

var head= document.getElementsByTagName('head')[0]; 
var script= document.createElement('script'); 
script.type= 'text/javascript'; 
script.onreadystatechange= function () { 
if (this.readyState == 'complete') 
callback(); 
} 
script.onload= function(){ 
callback(); 
} 
script.src= 'helper.js'; 
head.appendChild(script);

我設了2個事件監(jiān)聽函數(shù), 因為在ie中使用onreadystatechange, 而gecko,webkit 瀏覽器和opera都支持onload。事實上this.readyState == 'complete'并不能工作的很好,理論上狀態(tài)的變化是如下步驟:
1.uninitialized
2.loading
3.loaded
4.interactive
5.complete
但是有些狀態(tài)會被跳過。根據(jù)經(jīng)驗在ie7中,只能獲得loaded和completed中的一個,不能都出現(xiàn),原因也許是對判斷是不是從cache中讀取影響了狀態(tài)的變化,也可能是其他原因。最好把判斷條件改成this.readyState == 'loaded' || this.readyState == 'complete'

參考jQuery的實現(xiàn)我們最后實現(xiàn)為: 代碼如下: 

var head= document.getElementsByTagName('head')[0]; 
var script= document.createElement('script'); 
script.type= 'text/javascript'; 
script.onload = script.onreadystatechange = function() { 
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete" ) { 
help(); 
// Handle memory leak in IE 
script.onload = script.onreadystatechange = null; 
} }; 
script.src= 'helper.js'; 
head.appendChild(script);

還有一種簡單的情況就是可以把help()的調(diào)用寫在helper.js的最后,那么可以保證在helper.js在加載完后能自動調(diào)用help(),當然最后還要能這樣是不是適合你的應用。

另外需要注意:

1.因為script標簽的src可以跨域訪問資源,所以這種方法可以模擬ajax,解決ajax跨域訪問的問題。
2.如果用ajax返回的html代碼中包含script,則直接用innerHTML插入到dom中是不能使html中的script起作用的。粗略的看了下jQuery().html(html)的原代碼,jQuery也是先解析傳入的參數(shù),剝離其中的script代碼,動態(tài)創(chuàng)建script標簽,所用jQuery的html方法添加進dom的html如果包含script是可以執(zhí)行的。如:  
 

復制代碼 代碼如下:
jQuery("#content").html("<script>alert('aa');<\/script>");

以上就是動態(tài)加載JavaScript文件的方法,希望對大家的學習有所幫助。

相關文章

  • javascript oop開發(fā)滑動(slide)菜單控件

    javascript oop開發(fā)滑動(slide)菜單控件

    這里因為是演示所以讓HTML CSS盡量的簡化,另外使用jquery的 fn.slideUp fn.slideDown 實現(xiàn)起來會更容易不過我作為一個專業(yè)的開發(fā)者多了解些原生的JS對技術的提高還是很有幫助。
    2010-08-08
  • 解析JavaScript實現(xiàn)DDoS攻擊原理與保護措施

    解析JavaScript實現(xiàn)DDoS攻擊原理與保護措施

    本文主要對JavaScript實現(xiàn)DDoS攻擊原理與保護措施進行介紹,具有一定的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • 解決layui的table.checkStatus失效問題

    解決layui的table.checkStatus失效問題

    這篇文章主要介紹了解決layui的table.checkStatus失效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • JavaScript 特有方法計算二進制中1的個數(shù) split方法

    JavaScript 特有方法計算二進制中1的個數(shù) split方法

    這是一道網(wǎng)上看到的前端的筆試題,主要思想是利用JavaScript的toString方法將十進制數(shù)轉(zhuǎn)換為二進制的字符串。然后for循環(huán)遍歷計算字符串中”1″出現(xiàn)的次數(shù)。
    2010-05-05
  • 擴展JavaScript功能的正確方法(譯文)

    擴展JavaScript功能的正確方法(譯文)

    JavaScript已經(jīng)內(nèi)置了很多強大的方法,但有時你需要的某個功能在內(nèi)置的方法中沒有,我們怎么來優(yōu)雅地擴展JavaScript功能呢
    2012-04-04
  • JavaScript利用HTML DOM進行文檔操作的方法

    JavaScript利用HTML DOM進行文檔操作的方法

    DOM是W3C制定的用于訪問諸如XML和XHTML等結構化文檔的標準。通過本文給大家介紹JavaScript利用HTML DOM進行文檔操作的方法,需要的朋友參考下吧
    2016-03-03
  • javascript實現(xiàn)文字無縫滾動

    javascript實現(xiàn)文字無縫滾動

    這篇文章主要介紹了javascript實現(xiàn)文字無縫滾動,文字可以實現(xiàn)上下滾動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 淺談JS中幾種輕松處理''this''指向方式

    淺談JS中幾種輕松處理''this''指向方式

    這篇文章主要介紹了淺談JS中幾種輕松處理'this'指向方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • JS繼承實現(xiàn)方法及優(yōu)缺點詳解

    JS繼承實現(xiàn)方法及優(yōu)缺點詳解

    這篇文章主要介紹了JS繼承實現(xiàn)方法及優(yōu)缺點詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • bootstrap 設置checkbox部分選中效果

    bootstrap 設置checkbox部分選中效果

    本篇文章主要介紹了bootstrap 設置checkbox部分選中效果,主要涉及到js各個方面的內(nèi)容,對于bootstrap設置checkbox選中效果感興趣的朋友可以參考一下吧
    2017-04-04

最新評論

凤台县| 锡林郭勒盟| 文安县| 义乌市| 鲜城| 宁德市| 凌云县| 集贤县| 全南县| 锦屏县| 育儿| 江华| 杭锦后旗| 上饶县| 化州市| 天等县| 丹棱县| 墨玉县| 扎囊县| 奉节县| 寿光市| 东海县| 陵川县| 青龙| 永寿县| 汝南县| 南川市| 湖口县| 永吉县| 刚察县| 枣庄市| 辽宁省| 青川县| 奉化市| 敦煌市| 东明县| 本溪市| 罗江县| 晋中市| 微山县| 万荣县|