javascript关于event的ie ff兼容性问题

FF报错信息:firefox event is not defined

这个错误的原因是IE直接用windows.event就可以取得event事件,但在firefox下需要在重载element的事件函数时传递eventTag。例如下面的例子:
一:我的IE下的函数
tc.tbl.onmouseover=function()
 {
   var event=windows.event;
   var e=event.srcElement;
 }
二:firefox和IE兼容的函数
tc.tbl.onmouseover=function(eventTag){
   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="#" onclick="dosth()">测试</a>,则点击的时候,在ff下运行的代码是这样的:
function onclick(event){
  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.onload = function(){
   var oImg = document.getElementsByTagName("img")[0];
   oImg.onclick = handle;
  }
 </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对象的兼容



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值