自定义事件的传播

Red*_*ska 4 html javascript dom custom-event event-propagation

我希望我的 CustomEvent 从文档传播到所有 DOM 元素。由于某种原因,它没有发生。我究竟做错了什么?

<html>
<script>
function onLoad() {
  var myDiv = document.getElementById("myDiv");
  myDiv.addEventListener("myEvent",function(){alert("Yes!");});
  document.dispatchEvent(new CustomEvent("myEvent",{detail:null}));
}
</script>
<body onload="onLoad()">
<div id="myDiv"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

小智 7

默认情况下,自定义事件不会冒泡。

原因是,自定义事件定义说:

让事件=新的CustomEvent(类型,[,选项])。

选项有一个标志:bubbles,默认情况下为false,我们必须启用它。

以下将修复您的代码

<html>
<script>
function onLoad() {
  var myDiv = document.getElementById("myDiv");
  myDiv.addEventListener("myEvent",function(){alert("Yes!");});
  document.dispatchEvent(new CustomEvent("myEvent",{detail:null,bubbles:true}));
}
</script>
<body onload="onLoad()">
<div id="myDiv"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)