1. 程式人生 > >淺談IE事件處理與其他瀏覽器的差異

淺談IE事件處理與其他瀏覽器的差異

1、表示發生事件:

(1)非IE瀏覽器下,事件對應的函式有一個隱藏的變數e,表示發生事件。

(2)IE下,不需要e變數,window.event表示發生事件。

解決方案:用e||window.event來相容。

2、觸發事件物件(觸發事件的元素被認為是目標target):

(1)IE下,window.event物件有srcElement屬性,但沒有target屬性。

(2)Firefox下,e物件有target屬性,但沒有srcElement屬性。

(3)Chrome下,e物件同時具有target和srcElement屬性。

解決方案:event.srcElement ? event.srcElement : event.target來相容。

3、按鍵碼(字元程式碼):

(1)IE下,window.event物件只有keyCode屬性。

(2)FireFox下,e物件有which和charCode屬性。

(3)Opera下,e物件有keyCode和which屬性。

(4)Chrome下,e物件有keyCode、which和charCode屬性。

解決方案:用e.keyCode || e.which || e.charCode來相容。

4、阻止事件的預設行為:

(1)IE 中阻止事件的預設行為需要將window.event.returnValue屬性設定為false。

(2)非IE阻止事件的預設行為需要呼叫 e.preventDefault() 方法。

解決方案:條件判斷瀏覽器是否具有event.preventDefault再做相應處理。

5、阻止事件冒泡:

(1)IE阻止事件冒泡需要設定window.event.cancelBubble = true。

(2)非IE阻止事件冒泡需要呼叫e.stopPropagation()。

解決方案:條件判斷瀏覽器是否具有event.stopPropagation再做相應處理。