火狐IE event和target的兼容

一、event对象

IE 中可以直接使用 window.event 对象,而 FF 中则不可以,解决方法之一如下:


var theEvent = window.event || arguments.callee.caller.arguments[0];

第二种是将 event 作为参数来传递:


function test(event) {
var event = event || window.event;
//do Something
}

二、关于IE下的event.srcElement和火狐下的event.target


火狐下的e.target相当于ie下的event.srcElement,表示产生事件的源。

例子:

document.onclick = function(e){
var theEvent = window.event || e;
var srcElement = theEvent.srcElement;
if (!srcElement) {
srcElement = theEvent.target;
}

}

三、event.keyCode 和event.which

Mozilla下的event.which与IE下的event.keyCode相当。

代码:

JScript 代码 复制

//IE
<input type="text" nkeypress="doIt()">
<script language="javascript">
 function doIt()
 {
   alert(event.keyCode);
 }
</script>

//火狐
//经测试  调用位置必须加上event,声明处也加上event才可以使用
<input type="text" nkeypress="doIt(event)">
<script language="javascript">
 function doIt(oEvent)
 {
   alert(oEvent.which)
 }
</script>

四、event.x,event.y[IE]和event.pageX,event.pageY[Moz]

IE中取鼠标点击的绝对位置,使用event对象的event.x和event.y
Moz中取鼠标点击的绝对位置,使用event对象的event.pageX和event.pageY
所以为了兼容,需要自己做处理

五、event.offsetX,event.offsetY[IE]和event.pageX,event.pageY[Moz]


IE中取鼠标点击的相对位置,使用event对象的event.offsetX和event.offsetY
Moz中取鼠标点击的相对位置,使用event对象的event.layerX和event.layerY
所以为了兼容,需要自己做处理,

六、事件绑定


事件绑定上Mozilla用addEventListener,removeEventListener
对应IE的attachEvent,detatchEvent




来自为知笔记(Wiz)


你可能感兴趣的:(火狐IE event和target的兼容)