[英]How to block if JS download is not completed
我通過將JS文件附加到HTML頭來異步下載JS文件。 現在在html正文中,在使用JS文件之前,我想檢查JS文件是否已下載並且是否存在於緩存中。 如果緩存中不存在JS文件(例如,在互聯網連接緩慢的情況下),我想阻止它下載。 換句話說,如果JS下載未完成,我想模擬行為,就像阻止JS下載一樣。
知道如何實現嗎?
您可以實例化JS文件中的任何對象,並且可以在HTML文件中使用typeOf運算符檢查該對象是否可用,因此,如果typeof(x)未定義,則可以假定該文件尚未下載
如果您可以控制HTMl文件和JS文件,請執行以下操作:在已加載的代碼中的某個位置定義“回調”函數,然后從JS文件的末尾調用它。 示例功能:
<html>
<head>
<script>
function notify_file_is_loaded(identifier) {
if (identifier === 'somefile.js') {
// it's loaded!
// run the code that (in synchronous mode) you'd block for
}
}
</script>
<!--- ... --->
和JS文件:
// somefile.js
// some JS code goes here
// ...snip...
notify_file_is_loaded('somefile.js');
同步獲取JS。 只需將腳本標記附加到html > head
並使用src="<script-location>"
,瀏覽器將同步進行此下載。
在這里繼續走下去:在下載某些內容之前,阻止用戶體驗很糟糕。 如果您使用正常降級原則編寫代碼,則頁面應僅激活可用的功能。 您是否可以讓另一個Web開發人員對此進行管理? 不,我不會-我將關閉該標簽並繼續:)
您是否正在推遲通過JavaScript加載JavaScript文件? 如果是這樣,您應該能夠在加載JavaScript文件之后使用onload
事件處理程序執行代碼:
<script>
var js = document.createElement('script');
js.onload = function() {
// your code goes in here
}
js.src = 'foo.js';
document.body.appendChild(js);
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.