2014-12-24 5 views
12

У нас есть datepicker (в JavaScript), в котором есть раздел для проверки IE 8 и более старых и других современных браузеров.IE 11 DispatchEvent

if(-1 != navigator.userAgent.indexOf("MSIE")){ 
obj_caller.target.fireEvent("onchange"); 
} 
else { 
var evt = document.createEvent("HTMLEvents"); 
evt.initEvent("change", false, true); 
obj_caller.target.dispatchEvent(evt); 
} 

Это работает отлично в Chrome, Firefox, IE8 и ниже, но не удается в IE 11. Что мне нужно, это способ получить еще часть работает в IE 11. Я просто не могу понять, что происходит сбой и как это исправить.

Спасибо.

+4

Не обнюхивайте браузеры! 'if (document.createEvent)' – epascarello

ответ

11

Ваша проблема в том, что fireEvent не следует использовать в новых версиях IE. Поддержка отправки диспетчера была добавлена ​​в IE9. http://help.dottoro.com/ljrinokx.php

if(document.createEventObject) { 
    obj_caller.target.fireEvent("onchange"); 
} else { 
    var evt = document.createEvent("HTMLEvents"); 
    evt.initEvent("change", false, true); 
    obj_caller.target.dispatchEvent(evt); 
} 
+0

Код диспетчера не работает в IE 11, и я не могу понять, почему. Что-то не так с кодом? Я вынул целую цепочку if else, и только что протестировал ее в IE 11 с кодом dispatchevent, и она не удалась. Благодарю. – JohnnyCage

+0

См. Обновление и сообщите мне, если это сработает для вас. –

+2

Все еще не работает. Код внутри else не выполняется в IE 11. – JohnnyCage