最近在调试项目的时候,发现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); })