Firefox不支持event的解决方法
FF中不存在event对象,只能通过传递参数(并且唯一)的方式来实现 event
Event对象的两种获取方式
1. 在事件处理函数中,如果传入了 event
对象,那么所有的浏览器都可以使用,即:
function test(e){
e.stopPropagation();
}
//调用时带上参数
onclick="test(event);"
2. 如果事件处理函数中,未通过参数传入 event
,那么 Chrome 和 IE 下可通过 window.event
获取 event 对象,而Firefox不可以,需要用 arguments.callee.caller.arguments[0]
来获取 event 对象。
若开启了严格模式 "use strict";
arguments 不会再提供访问与调用这个函数相关的变量的途径,则 arguments.callee/caller
等将被禁止,即 Firefox 无法获取 event 了。因此建议使用第一种
实现getEvent方法
- 通过参数传递,调用时须传递参数
function getEvent(e){
return e || window.event;
}
- 通过
arguments.callee
实现,非严格模式才能使用
function getEvent() {
var _event;
if (window.event == undefined) {
caller = arguments.callee;
while (caller.caller != null) {
caller = caller.caller;
}
_event = caller.arguments[0];
}
else{
_event = window.event;
}
return _event;
}
参考文档