簡體   English   中英

加載后如何立即在動態加載的javascript上執行功能?

[英]How to execute function on dynamically loaded javascript immediately after loading?

我對以下問題的答案感到困惑: 動態加載的JS文件的執行

我有一些HTML:

<html>
    <head>
        <script type="text/javascript" src="/scripts/onload.js"></script>
    </head>
    <body onload="loadscript()">
    </body>
</html>

loadscript()將另一個腳本插入頭部。 如何立即從插入的腳本中調用函數? (不使用jQuery)

編輯:要插入的腳本是在運行時根據當前頁面的路徑確定的。

您無法立即在新腳本中運行代碼,因為瀏覽器必須首先通過網絡獲取代碼。 這需要時間,所以這是一個異步操作-插入腳本標簽的代碼將在后台獲取腳本的同時繼續執行。

一旦新的腳本文件到達,JavaScript引擎將解析並盡快執行它。 如果其他一些JavaScript代碼已經在執行(例如,事件處理程序),它將在執行新腳本之前等待該代碼完成。 本文很好地解釋了JavaScript異步執行模型。

您無法精確控制執行新腳本的時間,但可以從新腳本的頂層調用一個函數以使其盡快執行:

function myFunction() {
  // code to execute when the second script is included
}

myFunction();

如果您不需要在其他任何地方引用此功能,則可以使用IIFE保存一些字符:

!function() {
  // code to execute when the second script is included
}()

(或(function() { /* ... */ }()) ,或IIFE語法上的任何其他變體)。

暫無
暫無

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

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