关于javascript:dispatchEvent导致错误,无法在’EventTarget’上执行’dispatchEvent’:参数1不是’Event’类型

dispatchEvent Causes error failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'

我正在使用Angular2 + TypeScript,当我尝试执行此代码时:

1
2
var event = new Event('check');
window.dispatchEvent(event);

此代码导致下一个错误:

failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.

我已经尝试了所有方法,发现可以使用:

1
var event = new CustomEvent('check');

问题是任何IE不支持CustomEvent。

另一件有效的方法是:

1
2
var event = new Event('CustomEvent');
event.initCustomEvent('check');

问题是不建议使用InitCustomEvent。

我有什么办法可以避免这种类型的错误? 也许在打字稿中的某个地方例外? 还是使用任何不被弃用且适用于IE Edge的代码?


找到了解决方案。

对于某些TypeScript设置,仅当我们插入第二个参数时,新事件才是"事件"的类型,例如以下示例:

1
2
var event = new Event("check", { bubbles: true, cancelable: false });
window.dispatchEvent(event);


我在StackOverFlow中找到了另一个答案。

链接:https://stackoverflow.com/a/37687099/6264260

1
2
3
4
if (event && event.originalEvent) {
    var oe = event.originalEvent;
    this.dispatchEvent(new oe.constructor(oe.type, oe));
}

它对我很好。