在IE中可以这样 var a=window.event.clientX;但在Firefox中这样却没有办法,怎样获取一个兼容的event对象呢?
比如可以在IE中alert(event.clientX); 但在firefox这样就不行,比较妥善的做法是 var obj=window.event;//这样 //但是这个只能在ie中得到值,如果我想在firefox中获得这个obj.那么var obj=??????????//这里该怎么写呢?
event 兼容总结
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[0];
更多方法请参见:。
三、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。