事件对象

作者: 学的会的前端 | 来源:发表于2019-02-21 14:43 被阅读3次

事件对象

  1. 事件对象特点:
  • 只有在事件处理程序执行期间,event对象才存在,一旦事件处理程序执行完成,event对象就会被撤销;
  • event对象包含所有与事件有关的信息,包括导致事件的元素、时间的类型以及其他与特定事件相关的信息;
  • event对象的属性和方法会因事件类型的不同而不同。
  1. 事件对象的分类:
  • DOM中的事件对象
    a: 兼容DOM的浏览器会将一个event对象传入到事件处理程序中。(DOM0级、DOM2级)
<button id = 'btn'>click me</button>
<script>
var btn = document.getElementById('btn')
btn.onclick = function(event){
    console.log(event.type) //clcik
}
btn.addEventListener('click',function(event){
    console.log(event.type) // click
},false)
</script>
捕获.PNG
b: 在通过HTML特性指定事件处理程序时,变量event中保存着event对象。
<input type = "button" value = "Click Me" onclick = "console.log(event.type)"/>  <!--click-->
捕获.PNG
  • IE中的事件对象
    • 在使用DOM0级方法添加事件处理程序时,event对象作为window对象的一个属性存在。
    <button id = 'btn'>click me</button>
    <script>
    var btn = document.getElementById('btn')
    btn.onclick = function(){
        var event = window.event // window对象的属性
        console.log(event.type) // click
    }
    </script>
捕获.PNG
    • 如果事件处理程序时使用attachEvent()添加的,那么event作为参数被传入到事件处理程序中。
    <button id = 'btn'>click me</button>
    <script>
    var btn = document.getElementById('btn')
    btn.attachEvent('onclick',function(event){
        console.log(event.type) // click
    })
    </script>
    • 如果是通过HTML特性指定事件处理程序,便可以通过event变量访问event对象。
<input type = "button" value = "Click Me" onclick = "console.log(event.type)"/>  <!--click-->

跨浏览器的事件对象

    <script>
    var EventUtil = {
        addHandler:function(element,type,handler){
            //代码省略
        },
        getEvent: function(event){
            return event ? event : window.event
//返回对event对象的引用,在兼容DOM的浏览器中,
//event变量只是简单的传入和返回,
//而在IE中,event对象是未定义的,因此就会返回window.event。
        },
        getTarget: function(event){
            return event.target || event.srcElement
//返回事件的实际目标,如果存在target属性,则返回event,target,
//否则返回srcElement属性的值。
        },
        preventDefault: function(event){
            if(event.preventDefault){
                event.preventDefault()
            }else{
                event.returnValue = false
            }
        //取消事件的默认行为
        },
        stopPropagation: function(event){
            if(event.stopPropagation){
                event.stopPropagation()
            }else if {
                event.canceBubble = true
            }
            //阻止事件冒泡,stopPropagation既可以阻止冒泡也可以阻止捕获,
            //由于IE只有冒泡,所以此时只阻止冒泡。
        }
    }
    // 调用方式
    EventUtil.getTarget(event);
    </script>

阻止事件冒泡

  • DOM中的事件对象阻止事件冒泡:
var btn = document.getElementById('btn')
btn.addEventListener('click',function(e){
  e.stopPropagation()
},false)
//既可以阻止冒泡也可以阻止捕获
  • IE中的事件对象阻止事件冒泡
var btn = document.getElementById('btn')
btn.onclick = function(){
    window.event.canaelBubble  = true
}
//只能阻止事件冒泡

阻止事件默认行为

  • DOM中的事件对象阻止事件默认行为:
var link = document.querySelector('#link')
link.addEventListener('click',function(e){
    e.preventDefault()
})
  • IE中的事件对象阻止事件冒泡
var link = document.querySelector('#link')
link.onclick = function(){
  window.event.returnValue = false
}

相关文章

  • JavaScript事件03——事件对象

    大纲:事件对象(DOM中的事件对象,IE中的事件对象,跨浏览器) 一、事件对象 什么是事件对象? 在触发DOM上的...

  • 【事件】事件对象

    触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的额信息。(包括导致事件的元...

  • 事件对象

    事件对象:当触发某种事件时,可以获取一个对象,该对象与触发的事件是相关的,我们把他们称之为事件对象 事件对象也是一...

  • dom事件对象

    事件定义 常见事件 常见绑定方法 事件对象 鼠标键盘事件对象

  • 原生事件对象

    事件对象: 每当触发事件时,就会产生一个事件对象(不管是DOM 0 还是DOM2 都有事件对象)[ 事件对象操作的...

  • 事件

    1. 注册事件 事件监听方式: 2. 删除事件 3. 事件对象 3.1事件对象使用语法 3.2 事件对象的常见属性...

  • JavaScript(二)

    JavaScript对象 事件对象 type获取事件类型,显示事件为点击事件click target 获取事件目标...

  • this和e.target的异同

    简单分析 每次触发DOM事件时会产生一个事件对象(也称为event对象),此处的参数接收事件对象,而事件对象也有很...

  • 事件对象

    什么是事件对象?在触发DOM上的事件时都会产生一个对象 事件对象event DOM中的事件对象 (1) type属...

  • VC++(十六)线程同步与异步套接字编程

    事件对象也属于内核对象,分为两种:人工重置的事件对象和自动重置的事件对象。 当人工重置的事件对象得到通知时,等待该...

网友评论

    本文标题:事件对象

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