mik*_*ana 119 custom-events dom-events internet-explorer-9 internet-explorer-10 internet-explorer-11
我正在创建一个事件,所以使用DOM Event构造函数:
new Event('change');
Run Code Online (Sandbox Code Playgroud)
这在现代浏览器中工作正常,但在Internet Explorer 9,10和11中,它失败了:
Object doesn't support this action
Run Code Online (Sandbox Code Playgroud)
如何修复Internet Explorer(理想情况下通过polyfill)?如果我不能,是否有可以使用的解决方法?
mik*_*ana 163
在MDN上有一个用于CustomEvent构造函数的IE polyfill.将CustomEvent添加到IE并使用它可以工作.
(function () {
if ( typeof window.CustomEvent === "function" ) return false; //If not IE
function CustomEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
}
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
})();
Run Code Online (Sandbox Code Playgroud)
mic*_*uda 48
我认为解决问题和处理跨浏览器事件创建的最佳解决方案是:
function createNewEvent(eventName) {
var event;
if (typeof(Event) === 'function') {
event = new Event(eventName);
} else {
event = document.createEvent('Event');
event.initEvent(eventName, true, true);
}
return event;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54051 次 |
| 最近记录: |