峰之博纹 - Pelephone个人博客

FF代替IE的window.event的方法,不用带参

原先写js的时候没注意浏览器兼容问题,见window.event用得爽就狂用,发现问题时为时已晚,N多页面都是直接用了。在网上搜了好多让火狐兼容window.event的方法。大同小异都是要调用函数时带个参数。
最简单的是下面这样滴。

function testEvent(e)
{
Evt=window.event?window.event:e
alert(Evt);
}

<a onclick="testEvent(event)">test</a>


虽然只是多加一个参考,但那足以让我不爽……
因为之前写页面时忘了考虑兼容,如果要加参数的话我要一个个改到哭死。不好还好,篇了好多页后终于找到了不用带参的方法(真不明白有用的资源竟排不到第一页)
以下是代码:

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>


具体原理懒得打上来了,反正我自己也懒得看。偷懒偷懒。

posted @ 2009-04-27 15:43  Pelephone  阅读(574)  评论(0编辑  收藏  举报