event 兼容总结

作者:vkvi 来源:千一网络(原创) 日期:2007-5-14

event 在 IE 和 FF(Firefox) 中是不兼容的,现对常用的作个总结,以供参考,不代表全面。

一、设置事件

IE 中要命的是不支持用 setAttribute 动态设置 onclick 等事件属性、对象属性、集合属性。所以涉及到兼容性问题,解决方法之一如下:

if (this.obj.attachEvent)
{
    //IE
    var eventStr = "FuncOnClick();";
    this.obj.attachEvent("onclick", function(){eval(eventStr)});
}
else
{
    this.obj.setAttribute("onclick", "javascript:FuncOnClick();");
}

更多方法请参见:

二、event 对象

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

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

更多方法请参见:Netscape中使用event对象

三、srcElement 和 target

在 IE 中 srcElement 表示产生事件的源,比如是哪个按钮触发的 onclick 事件,FF 中则是 target。

var theEvent = window.event || arguments.callee.caller.arguments[0];
var srcElement = theEvent.srcElement;
if (!srcElement)
{
    srcElement = theEvent.target;
}

更多内容请参见:IE 和 FF 中的 srcElement

四、鼠标按钮键值。

  • IE 认为:左键为 1,右键为 2,中键(滚轮按下)为 4。
  • FF 认为:左键为 0,右键为 2,中键(滚轮按下)为 1。

这就需要一个函数来“翻译”,使返回值总相等,请参见函数:TranslateButton

相关文章