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)); } |
它对我很好。