首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 ><script> onload何时触发...?

<script> onload何时触发...?
EN

Stack Overflow用户
提问于 2019-06-05 03:07:30
回答 1查看 982关注 0票数 1

在下面的Mozilla函数中,JS用于向文档中添加标签。当onload事件触发时,我感到困惑。onload会在脚本开始下载或已经下载时触发吗?

代码语言:javascript
复制
function prefixScript(url, onloadFunction) {
  var newScript = document.createElement("script");
  newScript.onerror = loadError;
  if (onloadFunction) { newScript.onload = onloadFunction; }
  document.currentScript.parentNode.insertBefore(newScript, document.currentScript);
  newScript.src = url;
}

https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-06-05 03:33:03

当这些操作完成时,调用onload的回调:

  1. 获取脚本文件的HTTP请求已完成successfully
  2. The脚本内容已解析
  3. 脚本已执行,因此可能会暴露新的全局变量和/或触发DOM操作或XHR

等副作用

以下是一个演示,其中将jQuery库的脚本添加到<head>中,从而公开通过执行导入的脚本而创建的全局变量$

代码语言:javascript
复制
const script = document.createElement('script');
script.onload = () => {
  try {
    $;
    console.log('onload - $ is defined');
  } catch(e) {
    console.log('onload - $ is not defined yet');
  }
}

script.src = 'https://code.jquery.com/jquery-3.3.1.js';

try {
  $;
  console.log('main - $ is defined');
} catch(e) {
  console.log('main - $ is not defined yet');
}
document.head.appendChild(script);

最后一个精度-在这种情况下,加载是通过将脚本附加到DOM来触发的,而不是由script.src = ...!尝试注释掉最后一行-脚本永远不会加载。

也可能存在由script.src = ...触发加载的其他情况,例如,当脚本被附加到DOM时,将设置.src

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56449922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档