javascript - 在执行之前处理外部 javascript 脚本加载事件

标签 javascript html onload

我有一个 html 页面和一个 script ,我想以特定方式处理它们:在加载之后但执行之前。基本上我想预加载脚本,但在满足某些条件时执行。脚本不依赖于其他脚本,因此我将其设置为非阻塞(异步):

<script onload='onScripLoad()' scr='...' async></script>

我想要的只是类似于 onload 的东西,但它在下载的脚本之前执行。可能吗?

这里的问题是我能够预加载脚本,但无法与应用程序生命周期中所需的事件同步。 onScripLoad 是在脚本加载之后并且执行之后执行的。我需要的是在执行脚本时进行控制(推迟执行)。

添加更多详细信息我想预加载脚本并在 body 中存在某些元素时执行它,但我无法将脚本放在该元素之后,因为在这种情况下它会排队head 中正在下载一些其他资源。因此,我想将脚本放在 head 中,使其异步,下载后仅在特定元素可用时执行(或者在执行之前创建该元素)。我无法使其不异步,因为它是一个我无法控制的脚本,并且不希望我的整个页面依赖于它。

最佳答案

您可以在 head 部分加载外部脚本,将逻辑包装在函数内,然后稍后在条件内调用该函数:

externalscript.js:

function externalFunction(data) {
  console.log(data);
}

索引:

<head>
  <script src='externalscript.js' async></script>
</head>
<body>
  <script>
  var body_data = 'test';
  if (timing-driven-condition) {
    externalFunction(body_data);
  }
  </script>
</body>

函数 externalFunction 将首先加载,但只有在条件内调用时才会使用,这样您就可以控制它的执行时间。

希望这有帮助! :)

关于javascript - 在执行之前处理外部 javascript 脚本加载事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823843/

相关文章:

javascript - Angularjs ng-click 不工作

javascript - 使用 dojo 按类名删除元素

javascript - 如何在不知道id的情况下从内页获取父iframe元素?

javascript - 运行外部 javascript 文件来编辑 html 文件中的图形

php - 页面加载时弹出窗口

javascript - CSS :after fails in IE8, 但仅在添加对 jQuery 的引用之后

javascript - 没有回调或 promise 的异步函数的错误处理

javascript - 删除/删除动态创建的表详细信息

javascript - 无法在 image.onload 内生成输出

javascript - windows.onload 和 setInterval 仍然需要手动刷新才能工作