FF代替IE的window.event的方法,不用带参
event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等;
event对象只在事件发生的过程中才有效。
firefox里的event跟IE里的不同,IE里的是全局变量,随时可用;firefox里的要用参数引导才能用,是运行时的临时变量。
**在IE/Opera中是window.event,在Firefox中是event;**而事件的对象,在IE中是window.event.srcElement,在Firefox中是event.target,Opera中两者都可用。
原先写js的时候没注意浏览器兼容问题,见window.event用得爽就狂用,发现问题时为时已晚,N多页面都是直接用了。在网上搜了好多让火狐兼容window.event的方法。大同小异都是要调用函数时带个参数。
虽然只是多加一个参考,但那足以让我不爽……
因为之前写页面时忘了考虑兼容,如果要加参数的话我要一个个改到哭死。不好还好,篇了好多页后终于找到了不用带参的方法(真不明白有用的资源竟排不到第一页)
以下是代码:
function getEvent(){
if(document.all) return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){
return arg0;
}
}
func=func.caller;
}
return null;
}
//测试event函数
function testEvent()
{
var Evt = getEvent();
alert(Evt);
}
<a onclick="testEvent(event)">test</a>