窗口“加载” addEventListener不会触发

时间:2019-04-28 10:00:52

标签: 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();,但从未被调用。有人可以解释一下为什么吗?

1 个答案:

答案 0 :(得分:1)

您的JavaScript有2个缺陷。

No.1当元素onload被激发时,该窗口很可能已经加载,因此您不会捕获该事件。

No.2您不能将onload侦听器添加到动态创建的元素中。它永远不会射击。您想要做的是使用MutationObserver或听DOMNodeInserted事件(请记住,不建议使用后者,因此不鼓励使用)。