在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();");
}
{
//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;
}
if (!srcElement)
{
srcElement = theEvent.target;
}
更多內容請參見:IE 和 FF 中的 srcElement。
四、鼠標按鈕鍵值。
- IE 認為:左鍵為 1,右鍵為 2,中鍵(滾輪按下)為 4。
- FF 認為:左鍵為 0,右鍵為 2,中鍵(滾輪按下)為 1。
