js加載之使用DOM方法動(dòng)態(tài)加載Javascript文件
就像下面這樣:
<script type="text/javascript" src="example.js"></script>

<script>標(biāo)簽很方便,只要加入網(wǎng)頁(yè),瀏覽器就會(huì)讀取并運(yùn)行。但是,它存在一些嚴(yán)重的缺陷。
?。?)嚴(yán)格的讀取順序。由于瀏覽器按照<script>在網(wǎng)頁(yè)中出現(xiàn)的順序,讀取Javascript文件,然后立即運(yùn)行,導(dǎo)致在多個(gè)文件互相依賴的情況下,依賴性最小的文件必須放在最前面,依賴性最大的文件必須放在最后面,否則代碼會(huì)報(bào)錯(cuò)。
(2)性能問(wèn)題。瀏覽器采用"同步模式"加載<script>標(biāo)簽,也就是說(shuō),頁(yè)面會(huì)"堵塞"(blocking),等待javascript文件加載完成,然后再運(yùn)行后面的HTML代碼。當(dāng)存在多個(gè)<script>標(biāo)簽時(shí),瀏覽器無(wú)法同時(shí)讀取,必須讀取完一個(gè)再去讀取另一個(gè),造成讀取時(shí)間大大延長(zhǎng),頁(yè)面響應(yīng)緩慢。
為了解決這些問(wèn)題,可以使用DOM方法,動(dòng)態(tài)加載Javascript文件。
function loadScript(url){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
document.body.appendChild(script);
}
這樣做的原理是,瀏覽器即時(shí)創(chuàng)造出一個(gè)<script>標(biāo)簽,然后"異步"讀取Javascript文件。這樣不會(huì)造成頁(yè)面堵塞,但會(huì)造成另外一個(gè)問(wèn)題:這樣加載的Javascript文件,不在原始的DOM結(jié)構(gòu)之中,因此在DOM-ready(DOMContentLoaded)事件和window.onload事件中指定的回調(diào)函數(shù)對(duì)它無(wú)效。
- 淺談javascript中的DOM方法
- javascript firefox兼容ie的dom方法腳本
- AngularJS實(shí)現(xiàn)動(dòng)態(tài)編譯添加到dom中的方法
- 原生js獲取iframe中dom元素--父子頁(yè)面相互獲取對(duì)方dom元素的方法
- 淺析JS操作DOM的一些常用方法
- javascript先序遍歷DOM樹的方法
- javascript中html字符串轉(zhuǎn)化為jquery dom對(duì)象的方法
- JS動(dòng)態(tài)創(chuàng)建DOM元素的方法
- js使用DOM操作實(shí)現(xiàn)簡(jiǎn)單留言板的方法
- js常用DOM方法詳解
相關(guān)文章
JavaScript禁止復(fù)制與粘貼的實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇JavaScript禁止復(fù)制與粘貼的實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-05-05基于javascript的JSON格式頁(yè)面展示美化方法
本文介紹的方法基于javascript,css和myFunction結(jié)合可實(shí)現(xiàn)頁(yè)面展示轉(zhuǎn)換,下面有個(gè)示例,大家可以參考下2014-07-07使用Taro實(shí)現(xiàn)小程序商城的購(gòu)物車功能模塊的實(shí)例代碼
這篇文章主要介紹了使用Taro實(shí)現(xiàn)的小程序商城的購(gòu)物車功能模塊,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06mpvue微信小程序的接口請(qǐng)求fly全局?jǐn)r截代碼實(shí)例
這篇文章主要介紹了mpvue微信小程序的接口請(qǐng)求fly全局?jǐn)r截代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11JavaScript 組件之旅(四):測(cè)試 JavaScript 組件
本期,我們要討論的話題是 JavaScript 的測(cè)試,以檢查組件的狀態(tài)和工作方式是否符合預(yù)期,還會(huì)介紹一個(gè)可以方便編寫測(cè)試用例的測(cè)試方法。這里說(shuō)的測(cè)試當(dāng)然是使用自動(dòng)化的測(cè)試手段,這是軟件質(zhì)量保證(QA)的重要環(huán)節(jié)。2009-10-10JavaScript數(shù)據(jù)類型檢測(cè)代碼分享
這篇文章主要向大家分享了一段JavaScript實(shí)現(xiàn)數(shù)據(jù)類型檢測(cè)的代碼,附上參數(shù)說(shuō)明和使用說(shuō)明,希望小伙伴們能夠喜歡2015-01-01javascript實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)拖動(dòng)效果實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)拖動(dòng)效果,實(shí)例分析了javascript鼠標(biāo)拖動(dòng)效果的相關(guān)要點(diǎn)與實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04javascript中全局對(duì)象的isNaN()方法使用介紹
全局對(duì)象的isNaN()方法通常用于檢測(cè) parseFloat() 和 parseInt() 的結(jié)果,下面為大家介紹下其具體的使用,感興趣的朋友可以參考下2013-12-12