事件对象event

1.DOM中的事件对象

  • 兼容DOM的浏览器会将一个event对象传入到事件处理程序中。无论指定事件处理程序时使用什么方法(DOM 0级或者DOM 2级),都会传入event对象。
var oBtn = document.getElementById("myBtn");
//DOM 0
oBtn.onclick = function (event){
    alert(event.type);//"click"
};

//DOM 2
oBtn.addEventListener("click",function(){
    alert(event.type);//"click"
},false);

2.IE中的事件对象

  • IE中的事件对象,在使用DOM 0级方法添加事件处理程序时,event对象作为window对象的一个属性存在。
var oBtn = document.getElementById("myBtn");
oBtn.onclick = function(){
    var event = window.event;
    alert(event.type);//"click"
}

3.兼容

  • 小Demo,点击获取box盒子获取点击坐标
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>最大事件源</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background:red;
            margin:100px auto;
        }
    </style>
</head>
<body>
<div id="box"></div>
<script>
    var box = document.getElementById('box');
    //使用最大事件源来点击
    //最大事件源是document
    document.onclick = function (e) {
        //为什么不是var e = e || window.event呢?
        var e = e||event;
        box.innerHTML = e.clientX+'<br>'+e.clientY;
    }
</script>
</body>
</html>


  • demo中的event对象的兼容为什么不是var e = e || window.event呢?
    :最近遇到了上面这样的疑问,公司的前辈只是告诉我不用window.event是因为ie可以识别event,而且window.event这货耗性能

最后注意一点:不能var e = e || event不能写成var e = event || e,因为这在FireFox下会提示错误,FireFox无法处理未声明未赋值的变量event

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值