2

Я пытаюсь сделать polyfill для CustomEvent, которые поддерживают IE8, а это то, что я придумал:CustomEvent Поддержка IE8, как передать параметры?

if (typeof window.CustomEvent === "function") { 
    return false; 
} else { 
    function CustomEvent (eventName, params) { 
    params = params || { bubbles: false, cancelable: false, detail: undefined }; 
    if (document.createEvent) { // IE9, IE10 
     var evt = document.createEvent('CustomEvent'); 
     evt.initCustomEvent(
     eventName, 
     params.bubbles, 
     params.cancelable, 
     params.detail 
    ); 
     return evt; 
    } else if (document.createEventObject) { // IE8 
     var evt = document.createEventObject(); 
     evt.eventType = eventName; 
    } 
    }; 
    CustomEvent.prototype = window.CustomEvent.prototype; 
    window.CustomEvent = CustomEvent; 
} 

Для части IE8, как я могу передать params?

ответ

1

Вы можете перебрать params и назначить их на объект события:

var evt = document.createEventObject(); 
evt.eventType = eventName; 

for (var prop in params) { 
    evt[prop] = params[prop]; 
} 
Смежные вопросы