0 环境
chrome最新版
1.我在学《JS高程》的DOM0级事件处理程序时,通过event.eventPhase这个接口发现:DOM级事件处理程序是在冒泡阶段被捕获。
2.测试代码
测试代码的仓库位置:https://github.com/AChaoZJU/F...
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<button id="myBtn">Love JS</button>
<script>
var btn = document.getElementById('myBtn');
var handle = function() { //添加事件和移除事件的回调函数必须是同一个
console.log("in target event" + event.eventPhase);
}
document.body.onclick = function() {
console.log("事件冒泡" + event.eventPhase);
}
btn.onclick = handle;
</script>
</body>
</html>
测试结果:
我们可以看到打印的event.eventPhase:3,表明事件处理程序是在冒泡阶段被调用。
3 我的问题
可是DOM级事件处理程序难道不应该用的是DOM事件流吗?DOM级事件流不是可以在两个阶段调用事件处理程序吗(事件捕获阶段和事件冒泡阶段)?为什么只在冒泡阶段被调用?
DOM0级发生在冒泡阶段
DOM2级默认发生在冒泡阶段,第三个参数为TRUE则发生在捕获阶段。
高程上写,事件绑定在冒泡阶段可以最大限度兼容各大浏览器。