淺談IE事件處理與其他瀏覽器的差異
阿新 • • 發佈:2019-02-03
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再做相應處理。