簡體   English   中英

如果JS下載未完成,如何阻止

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM