饥人谷技术博客

事件对象

2019-02-21  本文已影响3人  学的会的前端

事件对象

  1. 事件对象特点:
  1. 事件对象的分类:
<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
    <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
    <button id = 'btn'>click me</button>
    <script>
    var btn = document.getElementById('btn')
    btn.attachEvent('onclick',function(event){
        console.log(event.type) // click
    })
    </script>
<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>

阻止事件冒泡

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

阻止事件默认行为

var link = document.querySelector('#link')
link.addEventListener('click',function(e){
    e.preventDefault()
})
var link = document.querySelector('#link')
link.onclick = function(){
  window.event.returnValue = false
}
上一篇 下一篇

猜你喜欢

热点阅读