javascript - 窗口 "load"addEventListener 未触发

标签 javascript

我对一件事很好奇。我正在 <head> 中加载脚本以下方式:

<script type="text/javascript">
  var domain = "http://example.com";
  var script = document.createElement("script");
  script.onload = function() {
    Lib.init(domain);
    Lib.watchAll();
  };
  script.src = domain + "/dist/sdk.js";
  script.async = true;
  document.head.appendChild(script);
</script>

我想问一件事 - 我有 window.addEventListener("load", function() {console.log("loaded");});里面Lib.watchAll();但它永远不会被调用。有人可以解释一下为什么吗?

最佳答案

您的 JavaScript 中有 2 个缺陷。

No.1 当您的元素 onload 被触发时,窗口很可能已经被加载,因此您将无法捕获该事件。

No.2 您不能向动态创建的元素添加 onload 监听器。它永远不会着火。你想要做的是使用 MutationObserver或收听DOMNodeInserted事件(请记住,后者已被弃用,因此不鼓励)。

关于javascript - 窗口 "load"addEventListener 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55889129/

相关文章:

javascript - Node JS+PostgreSQL : INSERT has more target columns than expressions

javascript - 长单行 ES6 字符串文字

javascript - Vue 数组的点击事件

javascript - PHP逻辑到Javascript前端转化成html标签

javascript - 执行ajax调用时是否发送了事件?

javascript - Grunt Node 和 Express 本地开发 HTTPS 证书

javascript - 是否可以使用 d3.js 绘制的元素作为同位素组件

javascript - 单击后在 Logo 下方保留导航下划线

javascript - 谷歌地图标记数据

带有ajax调用的Javascript循环