2015-06-21 48 views
0

我想加載我的JavaScript文件後加載頁面,並確保它們正在緩存。動態加載JavaScript文件,並確保它們被緩存

這個問題已經被問及很多回答,但他們都建議加載jQuery($.getScript),而我想加載的文件之一是jQuery本身,我不能使用jQuery。有一些選項,如:

(function(){ 
    var newscript = document.createElement('script'); 
    newscript.type = 'text/javascript'; 
    newscript.async = false; //as I'm going to execute some functions 
           //after this I want to make sure that the 
           //script is fully loaded 
    newscript.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'; 
    (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(newscript); 
})(); 

但我不知道他們是否緩存或不。 和有動態加載腳本完成時觸發事件的方法?

+0

你爲什麼這麼做? – Ryan

+0

我只有一個JavaScript文件,因爲我正在使用捆綁和縮小。但由於JavaScript的大小是大的,我不希望它的加載時間加載到頁面加載時間 –

+0

因此,你會......仍然通過加載它的同時加載它的加載時間到頁面的加載時間? (我甚至不知道設置'async = false'是否可以使它同步,但是如果是這樣的話,那看起來好像會擊敗那個點。) – Ryan

回答

1

您可以通過打開瀏覽器開發工具的網絡選項卡第二次加載您的頁面,從而輕鬆檢查它們是否被緩存。您可以通過加載腳本的方式來判斷文件是否被緩存。順便說一下,他們應該是。你基本上是通過JavaScript插入一個腳本標籤,然後加載腳本,就像標籤已經在頁面中一樣。

如果你讓異步加載,你可以在onload事件附加到一個腳本標籤,這將盡快加載腳本觸發。這應該適用於任何現代瀏覽器,包括標準模式下的IE9 +。如果你需要IE8的支持,你將不得不做一些額外的工作,這也是$.getScript()也是。在'onload' handler for script tag in Internet Explorer這個問題中可以找到關於這個jQuery功能的深入討論,以及其他代碼片段。

+0

和我我設置異步到ture,有沒有辦法加載完成後觸發事件? –

+1

請看看[這個問題](http://stackoverflow.com/questions/4845762/onload-handler-for-script-tag-in-internet-explorer)。答案提供了jQuery的改變代碼,它提供了這個onload事件,比如'.getScript()'。 – GolezTrol

+0

太好了,非常感謝 –

相關問題