IE 11中Window.opener.dispatchEvent抛出SCRIPT87: Invalid Argument错误

5

我有一个父窗口,打开了另一个窗口。在子窗口中,我正在尝试向打开者发送事件。我的代码如下:

export function taskClose(opener: string) {
if (!window.opener || window.opener === window || window.opener.closed) {
        redirectToPath(opener);
        return;
    }

var updateEvent;
if (typeof(Event) === 'function') {
    updateEvent = new Event('inboxNeedUpdate');
}else {
    updateEvent = document.createEvent('CustomEvent');
    updateEvent.initCustomEvent('inboxNeedUpdate', false, false, undefined);
}
window.opener.dispatchEvent(updateEvent);
window.close();}

我想知道如何正确地向打开的窗口分派事件。这段代码在Chrome和FF中可以正常工作。


1
我也遇到了同样的问题。有解决方法吗? - Bela Vizy
1
在搜遍了整个网络之后,我个人认为没有一个polyfill可以复制人们所期望的行为。看起来在IE11中dispatchEvent()无法使用window.opener 不可用。我认为我的唯一选择就是重构代码,以便不再引用window.opener - cneuro
我遇到了类似的问题。 - Adithya Sai
1个回答

1
需要引用原始窗口,否则它将拒绝该事件。
window.opener.document.createEvent('CustomEvent');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接