兼容IE和Firefox的event對象||event 兼容總結

在IE中能夠這樣 var a=window.event.clientX;
但在Firefox中這樣卻沒有辦法,怎樣獲取一個兼容的event對象呢?

好比能夠在IE中alert(event.clientX); 但在firefox這樣就不行,比較妥善的作法是 var obj=window.event;//這樣 //可是這個只能在ie中獲得值,若是我想在firefox中得到這個obj.那麼var obj=??????????//這裏該怎麼寫呢?javascript

<script>
/*firefox*/
function __firefox(){
    HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style);
    window.constructor.prototype.__defineGetter__("event", __window_event);
    Event.prototype.__defineGetter__("srcElement", __event_srcElement);
}
function __element_style(){
    return this.style;
}
function __window_event(){
    return __window_event_constructor();
}
function __event_srcElement(){
    return this.target;
}
function __window_event_constructor(){
    if(document.all){
        return window.event;
    }
    var _caller = __window_event_constructor.caller;
    while(_caller!=null){
        var _argument = _caller.arguments[0];
        if(_argument){
            var _temp = _argument.constructor;
            if(_temp.toString().indexOf("Event")!=-1){
                return _argument;
            }
        }
        _caller = _caller.caller;
    }
    return null;
}
if(window.addEventListener){
    __firefox();
}
/*end firefox*/
</script>

event 兼容總結

event 在 IE 和 FF(Firefox) 中是不兼容的,現對經常使用的做個總結,以供參考,不表明全面。

1、設置事件java

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();");
}

更多方法請參見:this

2、event 對象firefox

IE 中能夠直接使用 event 對象,而 FF 中則不能夠,解決方法之一以下:prototype

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

更多方法請參見:Netscape中使用event對象code

3、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。ip

4、鼠標按鈕鍵值。

  • IE 認爲:左鍵爲 1,右鍵爲 2,中鍵(滾輪按下)爲 4。
  • FF 認爲:左鍵爲 0,右鍵爲 2,中鍵(滾輪按下)爲 1。
相關文章
相關標籤/搜索