我试图了解是什么决定了单击嵌套时触发事件处理程序的顺序<div>
- 我所看到的似乎与记录的行为不一致,所以我正在寻找一些帮助来理解它。
我有 2 个嵌套 div,每个都附加了 2 个事件处理程序,一个用于捕获阶段,一个用于冒泡阶段:
<html>
<head>
<script>
function setup(){
var outer = document.getElementById('outer');
outer.addEventListener('click', function(){console.log('outer false');}, false);
outer.addEventListener('click', function(){console.log('outer true');}, true);
var inner = document.getElementById('inner');
inner.addEventListener('click', function(){console.log('inner false');}, false);
inner.addEventListener('click', function(){console.log('inner true');}, true);
}
</script>
<style>
div {
border: 1px solid;
padding: 1em;
}
</style>
</head>
<body onload="setup()">
<div id="outer">
<div id="inner">
CLICK
</div>
</div>
</body>
</html>
根据我读过的输出应该是:
outer true
inner true
inner false
outer false
但我实际看到的(在 Chrome 和 Firefox 上)是:
outer true
inner false
inner true
outer false
谁能解释这种差异?