FF报错信息:firefox event is not defined
这个错误的原因是IE直接用windows.event就可以取得event事件,但在firefox下需要在重载element的事件函数时传递eventTag。例如下面的例子:
一:我的IE下的函数
tc.tbl.on
{
var event=windows.event;
var e=event.srcElement;
}
二:firefox和IE兼容的函数
tc.tbl.on
var event=eventTag||windows.event;
var e=event.srcElement||event.target;
}
顺便说一句:firefox没有srcElement,但可以用target来代替。
很多教程上写 为了兼容不同浏览器 window.event?window.event:event
但是这样写ie下可行,ff下无法工作,必须写成 window.event?window.event:arguments.callee.caller.arguments[0]这样两个浏览器才可以。这是由于
ff里用addEventListener为事件添加的函数就可以通过获取第一个参数取得event。
譬如<a href="#" id="test">测试</a>
document.getElementById("test").addEventListener("click",dosth,false),点击之后,运行的代码是dosth(event);
而通过on加事件写的不能直接取得event,譬如<a href="#" on
function on
dosth();
}
应此必须用arguments.callee.caller.arguments[0]才能够取得ff里面的event对象。
获取事件目标
<html>
<head>
<script>
function handle(oEvent){
if(window.event) oEvent = window.event; //处理兼容性,获得事件对象
var oTarget;
if(oEvent.srcElement) //处理兼容性,获取事件目标
oTarget = oEvent.srcElement;
else
oTarget = oEvent.target;
alert(oTarget.tagName);
}
window.on
var oImg = document.getElementsByTagName("img")[0];
oImg.on
}
</script>
</head>
<body>
<img src="02.jpg" border="0">
</body>
</html>
下面是我参考上面的实例并且修改了我的代码:如下:
var sDate;
var month,day;
var event = window.event?window.event:arguments.callee.caller.arguments[0];//IE FF all work for event Object.
var srcele = event.srcElement ? event.srcElement : event.target;
if (srcele.tagName == "TD")
/**下面具体的代码略去...**/
真的谢谢作者,帮助我解决了问题。
转载地址:IE FF 的event对象的兼容