事件流

  • 事件冒泡:即事件最开始由具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。从里到外
  • 事件捕获:不太具体的节点应该最早接收到事件,而最具体的节点最后接收到事件。从外到里。IE8及其之前的浏览器不支持,不常用。

事件处理机制

  • HTML事件处理程序:在dom元素上写入onclick事件,然后加入事件名。
  • DOM0级事件处理程序:在js中直接给该dom元素添加click事件。
  • DOM2级事件处理程序:通过事件绑定来绑定click事件

    addEventListener() 添加事件 removeEventListener() 删除事件 他们都接收三个参数:要处理的事件名、作为事件处理程序的函数、事件捕获还是事件冒泡阶段处理函数(true在捕获阶段调用事件处理函数,false在冒泡阶段调用事件处理函数,默认为false)

  • IE事件处理程序

    attachEvent()添加事件 detachEvent()删除事件 接收相同的两个参数:事件处理程序的名称和事件处理程序的函数。 不用你第三个参数的原因是,IE8以及更早的浏览器版本只支持事件冒泡!

事件对象

  • 什么是事件对象,在触发DOM上的事件时会产生一个对象,事件对象event
  • DOM中的事件对象

    type属性用于获取事件类型 target属性,用于捕获事件目标 stopPropagation()方法,用于阻止事件冒泡 preventDefault(),阻止浏览器的默认行为

  • IE中的事件对象

    type属性,用于获取事件类型 srcElement属性,用于获取事件的目标 cancelBulle属性,用户阻止事件冒泡。设置true表示阻止冒泡,设置为false表示不阻止冒泡 returnValue属性,用于阻止事件的默认行为。设置false表示阻止事件的默认行为。

键盘事件

  • keyDown,当用户按下键盘上的任意键时触发,而且如果按住不放的话,会重复触发此事件。
  • keyPress,用用户按下键盘上的字符键时触发,而且如果按住不放的话,会重复触发此事件。
  • keyUp,当用户释放键盘上的键时触发
以上文章来自:黄卉 , https://huanghui8030.github.io/js/sjzj.html