js加載之使用DOM方法動態(tài)加載Javascript文件
更新時間:2013年11月08日 11:50:52 作者:
傳統(tǒng)上,加載Javascript文件都是使用script標簽,我們也可以使用DOM方法,動態(tài)加載Javascript文件,具體實現(xiàn)如下,感興趣的朋友可以參考下
傳統(tǒng)上,加載Javascript文件都是使用<script>標簽。
就像下面這樣:
<script type="text/javascript" src="example.js"></script>
<script>標簽很方便,只要加入網(wǎng)頁,瀏覽器就會讀取并運行。但是,它存在一些嚴重的缺陷。
?。?)嚴格的讀取順序。由于瀏覽器按照<script>在網(wǎng)頁中出現(xiàn)的順序,讀取Javascript文件,然后立即運行,導(dǎo)致在多個文件互相依賴的情況下,依賴性最小的文件必須放在最前面,依賴性最大的文件必須放在最后面,否則代碼會報錯。
?。?)性能問題。瀏覽器采用"同步模式"加載<script>標簽,也就是說,頁面會"堵塞"(blocking),等待javascript文件加載完成,然后再運行后面的HTML代碼。當存在多個<script>標簽時,瀏覽器無法同時讀取,必須讀取完一個再去讀取另一個,造成讀取時間大大延長,頁面響應(yīng)緩慢。
為了解決這些問題,可以使用DOM方法,動態(tài)加載Javascript文件。
function loadScript(url){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
document.body.appendChild(script);
}
這樣做的原理是,瀏覽器即時創(chuàng)造出一個<script>標簽,然后"異步"讀取Javascript文件。這樣不會造成頁面堵塞,但會造成另外一個問題:這樣加載的Javascript文件,不在原始的DOM結(jié)構(gòu)之中,因此在DOM-ready(DOMContentLoaded)事件和window.onload事件中指定的回調(diào)函數(shù)對它無效。
就像下面這樣:
<script type="text/javascript" src="example.js"></script>
<script>標簽很方便,只要加入網(wǎng)頁,瀏覽器就會讀取并運行。但是,它存在一些嚴重的缺陷。
?。?)嚴格的讀取順序。由于瀏覽器按照<script>在網(wǎng)頁中出現(xiàn)的順序,讀取Javascript文件,然后立即運行,導(dǎo)致在多個文件互相依賴的情況下,依賴性最小的文件必須放在最前面,依賴性最大的文件必須放在最后面,否則代碼會報錯。
?。?)性能問題。瀏覽器采用"同步模式"加載<script>標簽,也就是說,頁面會"堵塞"(blocking),等待javascript文件加載完成,然后再運行后面的HTML代碼。當存在多個<script>標簽時,瀏覽器無法同時讀取,必須讀取完一個再去讀取另一個,造成讀取時間大大延長,頁面響應(yīng)緩慢。
為了解決這些問題,可以使用DOM方法,動態(tài)加載Javascript文件。
復(fù)制代碼 代碼如下:
function loadScript(url){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
document.body.appendChild(script);
}
這樣做的原理是,瀏覽器即時創(chuàng)造出一個<script>標簽,然后"異步"讀取Javascript文件。這樣不會造成頁面堵塞,但會造成另外一個問題:這樣加載的Javascript文件,不在原始的DOM結(jié)構(gòu)之中,因此在DOM-ready(DOMContentLoaded)事件和window.onload事件中指定的回調(diào)函數(shù)對它無效。
相關(guān)文章
基于Bootstrap的Java開發(fā)問題匯總(Spring MVC)
這篇文章主要為大家匯總了基于Bootstrap的Java開發(fā)問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
js如何判斷是否在iframe中及防止網(wǎng)頁被別站用iframe嵌套
本文主要介紹了js判斷是否在iframe中及防止網(wǎng)頁被別站用 iframe嵌套的方法。具有很好的參考價值,下面跟著小編一起來看下吧2017-01-01
javascript保留兩位小數(shù)的實現(xiàn)方法你了解嗎
這篇文章主要為大家介紹了javascript保留兩位小數(shù)的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
地址欄傳遞中文參數(shù)亂碼在js里用escape轉(zhuǎn)碼
亂碼,頭大的一件事可以考慮轉(zhuǎn)碼方式不直接傳中文,在js里用escape轉(zhuǎn)碼,具體實現(xiàn)如下,有類似情況的朋友可以參考下2013-08-08

