此文章第一是作为笔记,对知识点做一个整体梳理,第二网上有众多事件流讲解,所以对于我已经理解的细节不再说明,只记录自己疑惑的部分.
普通概念:
- 什么是事件流?
- 事件顺序是什么样?
捕获--目标--冒泡
- 兼容性怎么样?
ie8及以下不支持捕获.
- 兼容性小历史?
刚开始其他支持捕获,而ie非支持冒泡.后来w3c支持捕获--目标--冒泡,而ie8头铁还不支持捕获,直到ie9才改变
- 事件委托原理?
冒泡+event,target实现.
重点概念
- 怎样创建捕获和冒泡的事件?
除了addeventlistener,且参数为true,其他都是冒泡.
- 怎样阻止捕获和冒泡事件?
event.stopPropagation(): 阻止冒泡和捕获
event.preventDefault(). 阻止默认事件.
return false: 阻止冒泡和捕获以及阻止默认事件.
- jquery的事件使用方式是什么?以及优缺点:
bind\live\delegete\on(推荐)
- 原生代码事件的使用方式?
el.addEventListener("click", function(e){
console.log('add');
}, true/false);
el.onclick = function(e){
console.log("onclick");
}
<a href="javascript:;" onclick="hello()" />
<script>
function hello(){
console.log("hello")
}
</script>
- 捕获的真正顺序:
window-document-body-div-body-document-window