如何在加载后立即对动态加载的javascript执行函数?

时间:2014-09-09 08:26:08

标签: javascript

我对这个问题的答案感到困惑:Execution of dynamically loaded JS files

我有一些HTML:

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

loadscript()在头部插入另一个脚本。如何从插入的脚本中立即调用函数? (不使用jQuery)

编辑:要插入的脚本在运行时确定,具体取决于当前页面的路径。

1 个答案:

答案 0 :(得分:0)

您无法立即在新脚本中运行代码,因为浏览器必须首先通过网络获取代码。这需要时间,因此它是一个异步操作 - 插入脚本标记的代码将在后台获取脚本时继续执行。

新脚本文件到达后,JavaScript引擎将尽快解析并执行它。如果某些其他JavaScript代码已经在执行(例如,事件处理程序),它将在执行新脚本之前等待该代码完成。 This article是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语法的任何其他变体。)