DOM事件速记(一)

269 阅读2分钟

事件流

  • IE冒泡 (从内部到外部)
  • Netscape捕获流(从外部到内部)
  • DOM事件流
    • 事件捕获阶段
    • 处于目标阶段
    • 事件冒泡阶段

事件处理程序

  • HTML事件处理程序(代码耦合度高)
<input type="button" onclick="alert(1)"/>
  • DOM0级事件处理程序
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 只读 被触发事件的类型