簡體   English   中英

jQuery.load()是否在加載后<script> content is loaded?

[英]Does jQuery.load() load after <script> content is loaded?

兩個問題:

  1. jQuery.load()是否在完全下載<script>的內容后運行?

  2. 如果以防萬一,文檔中有一個<script>將動態注入另一個<script> ,則在下載第二個腳本的內容之后, load()會運行還是在原始的非動態內容被下載后運行?裝?

謝謝


2)問題的示例如下:

<html>
<head>
<script src="myscrip1.js"></script>
<script>
$(document).load( myscript2.functionA );
</script>
</head>
</html>

myscript.js將myscript2.js注入dom的位置。 其中myscript2.js包含函數myscript2.functionA

顯然,我想在myscript2.js完全加載后運行myscript2.functionA。

:)

當初始HTML中引用的所有資源均已下載(或在出現錯誤時超時)時,將觸發文檔就緒事件。 如果您動態注入對另一個腳本的引用(例如facebook api,google Analytics等),則相對於文檔就緒事件而言,其准備狀態是不確定的。

如果要檢查外部腳本是否准備就緒,可以檢查其創建的對象是否已加載

<script type="text/javascript">
  var startAfterJqueryLoaded = function(){
    if(typeof jQuery === "undefined" ) {
        setTimeout( startAfterJqueryLoaded, 100 );
        return;
    }

    // jQuery is ready, do something
  }

  startAfterJqueryLoaded();

</script> 

或者,如果您控制着要動態注入的腳本,則可以建立一個全局函數,准備好后將調用它。

<script type="text/javascript">
  window.dynamicScriptIsReady = function(){
    // do something
  }
</script> 


// Dynamic.js
// ...Setup whatever

window.dynamicScriptIsReady();

如果將load事件處理程序放入標准document ready事件處理程序包裝器中,它將確保首先加載外部腳本。 您應該考慮這種標准做法。 解決方案很簡單:

<script src="myscrip1.js"></script>
<script>
$(document).ready(function() {
  $(document).load( myscript2.functionA );
});
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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