2014-01-10 7 views
0

У меня проблема с режимом quirks IE9. Я зарегистрировал событие oncahnge для элемента ввода. Это работает до сих пор, но в IE9 наш сайт переходит в режим quirks (он такой, какой есть), и там у меня есть проблема, что браузер не передает event-Object в мой метод обработчика.IE9 Режим Quirks не передает параметр события обработчику события

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

Это может быть проверено в IE10 (я полагаю, ALS в IE9) с открытием WebDeveloper консоли (F12), Установка BrowserMode на "IE9" и Документ-режим, чтобы (IE5-Quirks). Затем браузер ведет себя так же, как установка родного IE9 в режим совместимости IE 9 и Document-Mode с «Quirks».

Есть ли возможность получить событие-объект как-то?

Заранее благодарен!

ответ

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

Смежные вопросы