事件流
- IE冒泡 (从内部到外部)
- Netscape捕获流(从外部到内部)
- DOM事件流
事件处理程序
<input type="button" onclick="alert(1)"/>
var btn = document.querySelector("input");
btn.onclick = function(){
alert(this);
}
- DOM2级事件处理程序
ps:DOM1级主要是HTML和XML规范
添加事件:第三个参数默认为fales,表示添加到冒泡阶段;true表示添加到事件捕获阶段
移除事件:函数必须是存在引用的才可移除,即添加的事件处理函数是匿名函数者不可移除
let handler = function(){
alert(event);
}
btn.addEventListener("click",handler,false);
btn.removeEventListener(("click"),handler,false);
- IE事件处理程序
需要注意的是IE添加事件的顺序是和DOM2 相反的,即谁在后面谁先出现
btn.attachEvent("onclick",handler);
btn.detachEvent("onclick",handler);
事件对象
| 属性/方法 |
类型 |
读写 |
说明 |
| bubbles |
Boolean |
只读 |
表明事件是否冒泡 |
| cancelable |
Boolean |
只读 |
表明是否可以取消事件的默认行为 |
| currentTarget |
Element |
只读 |
其事件处理程序当前正在处理的那个元素 |
| defaultPrevented |
Boolean |
只读 |
为true表示已经调用preventDefault()(DOM3级事件新增) |
| detail |
Integer |
只读 |
与事件相关的细节信息 |
| eventPhase |
Integer |
只读 |
1表示捕获阶段,2 表示处于目标,3表示冒泡阶段 |
| preventDefault() |
Function |
只读 |
取消事件默认行为,当cancelable为true时可用 |
| stopImmediatePropagation() |
Function |
只读 |
取消事件的进一步捕获或者冒泡,同时阻止任何事件处理程序被调用(DOM3级事件中新增) |
| stopPropagation() |
Function |
只读 |
取消事件的进一步捕获或者冒泡,当babbles为true时可用 |
| target |
Element |
只读 |
事件的目标 |
| trusted |
Boolean |
只读 |
true表示事件是浏览器生成,false表示事件是开发人员创建(DOM3新增) |
| type |
String |
只读 |
被触发事件的类型 |
| view |
AbstractView |
只读 |
与事件关联的抽象视图 等同于发生事件的window对象 |
| 通用事件(IE) |
加粗的为都通用 |
|
|
| cancleBubble |
Boolean |
读/写 |
默认false,设置为true就可以取消事件冒泡,(与DOM中stoPropagation()方法作用相同) |
| returnValue |
Boolean |
读/写 |
默认值true,设置为false就可以取消事件的默认行为,(与DOM中preventDefault()方法作用相同) |
| srcElement |
Element |
只读 |
事件的目标(与DOM中的target属性相同) |
| type |
String |
只读 |
被触发事件的类型 |