2014-01-10 89 views
0

我有一個IE9怪癖模式的問題。我已經註冊了一個oncahnge事件到一個輸入元素。這工作到目前爲止,但在IE9我們的網站進入怪癖模式(它是這樣的),我有問題,瀏覽器不會傳遞事件對象到我的處理程序方法。IE9怪癖模式不會傳遞事件參數給事件處理程序

document.getElementById("foo").onchange=myChangeMethod; 
function myChangeMethod(event){ 
    //In IE 9 quirks mode "event" is undefined... 
    if(event != undefined){ 
    //do stuff 
    } 
} 

這可以在IE10進行測試(ⅰ假設在IE9 ALS)與打開WebDeveloper控制檯(F12),設置BrowserMode爲 「IE9」 和文檔模式到(IE5-怪癖)。然後,瀏覽器的行爲與將本地IE9設置爲「IE 9兼容模式」並將文檔模式設置爲「怪癖」相同。

是否有可能以某種方式獲取事件對象?

提前致謝!

回答

1

我假設事件是全球性的,在IE怪癖模式,所以檢查事件參數和分配window.event如果是undefined可以解決這個問題:

function myChangeMethod(evt){ 
    //In IE 9 quirks mode "event" is undefined... 
    evt = evt || window.event; //<== HERE 
    // additionally in quirks mode evt.target is evt.srcElement, 
    // so if needed you could assign evt.target as: 
    var originator = evt.target || evt.srcElement; 
    if(evt){ 
    //do stuff 
    } 
} 
+0

感謝那些沒有的伎倆!我另外手動設置了event.target,因爲它在這裏被稱爲event.srcElement! – Tarator

+0

嗨@Tarator,很高興我能幫上忙。我在回答中添加了一個'target' vs'srcElement'註釋。 – KooiInc

+0

@Teemu你是對的,它是隻讀的。我會調整答案 – KooiInc

相關問題