美文网首页大话前端程序员
DOM事件你知道多少

DOM事件你知道多少

作者: fenerchen | 来源:发表于2018-07-31 11:58 被阅读3次

一、基本概念:DOM事件级别

DOM0级:element.onclick=function(event){}
DOM2级:element.addEventListener('click',function(event){},false)冒泡
DOM3级:element.addEventListener('keyup',function(event){},false),新增的鼠标键盘事件
注意dom1级没有涉及事件,不是没有dom1标准

二、事件模型

事件模型
指捕获和冒泡

三、事件流


捕获阶段的事件流
冒泡阶段反之

事件处于捕获阶段触发

 ev.addEventListener('click', function (e) {
            console.log('ev captrue');
        }, true);

        window.addEventListener('click', function (e) {
            console.log('window captrue');
        }, true);

        document.addEventListener('click', function (e) {
            console.log('document captrue');
        }, true);

        document.documentElement.addEventListener('click', function (e) {
            console.log('html captrue');
        }, true);

        document.body.addEventListener('click', function (e) {
            console.log('body captrue');
        }, true);

四、Event对象常见应用

  • event.preventDefault():取消事件的默认行为,a标签设置此方法,不会打开连接
  • event.stopPropagation():取消事件冒泡或捕获。
  • event.stopImmediatePropagation():取消事件冒泡或捕获,同时取消其他事件处理程序的调用。
    仅打印click1
window.addEventListener('click',function(e){
    console.log('click1')
    e.stopImmediatePropagation()
},true)
window.addEventListener('click',function(e){
    console.log('click2')
},true)
  • event.currentTarget:范围大,表示添加事件处理程序的那个元素
  • event.target:小范围,表示真正点击的目标元素

五、自定义事件

无参数

  var eve = new Event('test');//定义test事件
        ev.addEventListener('test', function () {
            console.log('test dispatch');
        });
        setTimeout(function () {//1s后出发事件
            ev.dispatchEvent(eve);
        }, 1000);
var f=document.getElementById('float')
var newE=document.createEvent('Event')//创建新事件
newE.initEvent('a')//初始化事件类型
f.addEventListener('a',function(e){
    console.log(5)
})
   setTimeout(function () {//1s后出发事件
           f.dispatchEvent(newE)
        }, 1000);

有参数


var newE=document.createEvent('CustomEvent')
newE.initCustomEvent('a',true,false,'hello')//事件类 型‘a’,冒泡,事件不可以取消,detail中的值为hello
f.addEventListener('a',function(e){
    console.log(e.detail)
})
f.dispatchEvent(newE)

六、IE事件与DOM事件的区别

1、DOM中事件的this指向当前元素,而IE中的this指向window
DOM

var f=document.getElementById('float')
f.addEventListener('click',function(e){
   console.log(this===f)//true
},true)
f.onclick=function(e){
    console.log(this===f)//true
}

IEEdge已经不支持attachEvent了

f.attachEvent('onclick',function(){
    console.log(this===window)//true
})

2、IE中的同一事件类型的不同处理程序,按照反添加顺序执行,DOM反之。
3、事件对象不同
DOM级别的事件处理程序均会传入event对象,在IE中的event对象方式取决于指定的事件处理程序方法。
IE中使用DOM0方法,event对象是window的一个属性

f.onclick=function(){
    event=window.event
    console.log(this===f)//true
}

IE中使用attachEvent()方法,会传入event对象,同DOM

f.attachEvent('onclick',function(event){
    console.log(event.type)
})

4、IE中的事件目标是srcElement
event.srcElement,window.event.srcElement

相关文章

  • DOM事件你知道多少

    一、基本概念:DOM事件级别 DOM0级:element.onclick=function(event){}DOM...

  • 前端面试题(3)——DOM事件类

    基本概念:DOM事件的级别 DOM事件模型:事件冒泡事件捕获 DOM事件流 描述DOM事件捕获的具体流程 Even...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级、DOM1级、DOM2级、DOM3级DOM事件:DOM0级事件处理、...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级,DOM1级,DOM2级和DOM3级DOM事件:DOM0级事件处理,...

  • DOM0和DOM2级事件简单理解

    关于DOM0 和DOM1级事件可以简单理解为:事件分为DOM 0级事件和Dom 2级事件,DOM2级事件也叫做事件...

  • Dom事件

    基本概念 Dom事件级别 Dom事件模型 Dom事件流 描述Dom事件捕获的具体流程 Event对象的常见应用 自...

  • 3-6 DOM事件

    问题 DOM 事件的级别 DOM 事件模型(就是捕获和冒泡儿) DOM 事件流 描述DOM事件捕获的具体流程 Ev...

  • HTML DOM 事件

    HTML DOM 事件 HTML DOM 事件 HTML DOM 事件允许Javascript在HTML文档元素中...

  • 网易微专业-DOM编程艺术 05 事件

    1、DOM事件⑴主要内容▪事件流▪事件注册▪事件对象▪事件分类▪事件代理 ⑵什么是DOM事件▪点击一个DOM元素▪...

  • DOM事件类

    基本概念:DOM事件的级别 DOM事件模型 DOM事件流 描述DOM事件捕获的具体流 Event对象的常见应用 自...

网友评论

    本文标题:DOM事件你知道多少

    本文链接:https://www.haomeiwen.com/subject/ormcvftx.html