event对象的兼容性

 
 

最近在调试项目的时候,发现IE和Chrome都显示正常,就是FireFox异常,F12查看控制台,发现报错:window.event is undefined。检查代码中定义的事件方法中获取事件对象直接使用的window.event,去掉window后,IE异常,但是FF正常,坑啊。。。想当然以为全局引入了jquery,就不用做这方面的兼容,其实,只有在jquery封装的事件方法里使用event才可以不考虑兼容,其他的自己写的方法即便会在jquery的事件里调用,还是要兼容。现在总结一下,以后备用。

1. event

   IE:直接使用event就行,为保险起见,写成window.event;
   FF:window.event要报错,提示undefined,经查询,发现要用参数引导才能使用;
   原生js兼容写法: 
 

function foo(event){
    var evt = window.event||event;
}

   如果有引入jquery:

  

$(".btn").click(function(event){
    alert(event.type);
})

 

2. event.target属性: 获取触发事件的元素对象

    原生js:
   

function foo(event){
    var evt = window.event||event;
    var targetObj = evt.target||evt.srcElement;
}

 


   jquery写法:

   

$(".btn").click(function(event){
    alert(event.target);
})

猜你喜欢

转载自blog.csdn.net/qq_21417123/article/details/79640873