Event事件的相容性(轉)

來源:互聯網
上載者:User

標籤:style   ar   io   color   使用   sp   strong   on   div   

window.event問題
問題說明:window.event 只能在IE下運行,而不能在Firefox下運行,這是因為Firefox的event只能在事件發生的現場使用。
解決方案:在事件發生的函數上加上event參數,在函數體內(假設形參為evt)使用 var myEvent = evt?evt:(window.event?window.event:null)

在Firefox頁面調用後,其windows.event對象為undefined:

  1. if (typeof (window.event) == ‘undefined‘) 
  2. alert(‘window.event is undefined.‘); 
  3. else 
  4. alert(‘window.event is defined.‘); 

以上代碼在Firefox中執行,結果為:"window.event is undefined."。IE 和 Chrome中執行結果:“window.event is defined."

1. 在函數中傳遞event參數

  在函數中傳遞event參數,這樣我們就可以相容IE和FF的event的擷取了,如下面的函數:

function _test(evt)
{
    var src = evt.srcElement || evt.target; // 擷取觸發事件的來源物件
    alert(src.value); // 列印該對象的value屬性
}

    那麼我們在使用的時候就應該這樣:

<input type=‘button‘ value=‘click me‘ onclick=‘_test(event)‘ />

2.在函數調用中不傳遞event對象

雖然在函數中沒有傳遞參數,這個在IE下沒有任何影響,因為window.event是全域對象,在什麼地方都可以直接調用的,而在FF下就不行了。所以我們這裡要使用另外一種方式來擷取了,如下:

unction _test2()
{
    var evt = window.event || arguments.callee.caller.arguments[0]; // 擷取event對象
    var src = evt.srcElement || evt.target; // 擷取觸發事件的來源物件
    var iKeyCode = evt.keyCode || evt.which; //擷取按鈕代碼
    alert(src.value); // 列印該對象的value屬性
    if (window.navigator.userAgent.indexOf("IE")>=1){
       evt.keyCode =0;
              evt.returnValue=false;
           }else{
              evt.preventDefault();
           }
}

    那麼,我們在使用的時候就可以想普通的函數調用一樣,直接輸入函數名稱即可,如下:

<input type=‘button‘ value=‘click me2‘ onclick=‘_test2()‘ />

 

 

event.srcElement問題
問題說明:IE下,even對象有srcElement屬性,但是沒有target屬性;Firefox下,even對象有target屬性,但是沒有 srcElement屬性。
解決方案:使用srcObj = event.srcElement ? event.srcElement : event.target;

Event事件的相容性(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.