javascript - dispatchEvent 不能在边缘工作

标签 javascript angular typescript microsoft-edge

在我的 Angular 应用程序中,我必须打开一个新窗口并将一个事件发送回 Controller 。该代码适用于 Chrome 和 Firefox,但它不适用于 Edge

下面是来自外部文件的代码

try {
   var ev = new Event('abc');
   ev['data'] = model;
   window.opener.dispatchEvent(ev);
} catch (e) {
    alert(e);
}

在外部窗口中,我收到警告 ERROR:invalid argument.

在 Angular 组件中我有监听器

@HostListener('window:abc', ['$event'])

无法从其他答案中获得太多信息。

请指导 谢谢

最佳答案

问题不在于 disptachEvent。这是因为子窗口失去了打开它的父 Angular 组件的范围。 为了解决这个问题,我从这个 thread 中找到了解决方案.

在打开子窗口之前我们必须设置angularComponentRef的引用

window['angularComponentRef'] = {component: this, zone: _ngZone};

关于javascript - dispatchEvent 不能在边缘工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51780072/

相关文章:

JavaScript:嵌套对象值可以引用其父对象键吗?

javascript - 如何使用浏览器的滚动条滚动 iframe 的内容?

javascript - 如何在 Angularjs 中监听 native 和自定义 JavaScript 事件

javascript - Angular 2 - 在使用 "Upgrade Adapter"升级时是否可以使用新路由器

reactjs - React 类组件有属性,但 Typescript 说没有

typescript 不检查接口(interface)声明的函数参数类型

Javascript将多维数组转换为唯一的项目数组

javascript - Angular 5 动画特定过渡

javascript - 将 typescript 函数保存为对象变量(Angular 6)

typescript :类型  'string | undefined' 不可分配给类型  'string'