在已重定向的弹出窗口中分派的Javascript事件

Pao*_*one 5 javascript asp.net popup javascript-events custom-event

我有一个页面A打开一个弹出窗口B.页面B,在一些工作后,总是重定向到弹出窗口中的另一个页面C. 然后,页面C调度一个事件以将一些数据发送到页面A,但是页面A没有引用页面C来注册事件处理程序.我试过的代码有点像这样:

网页A:

function handler(e) {
    alert(e.detail.message);
}
var popup = window.open('/PageB.aspx');
popup.addEventListener("dispatch", handler, false);
Run Code Online (Sandbox Code Playgroud)

网页B:

location.href = "PageC.aspx";
Run Code Online (Sandbox Code Playgroud)

PageC:

var event = new CustomEvent(
        "dispatch",
        {
            detail: {
                message: "Test"
            },
            bubbles: true,
            cancelable: true
        }
    );

window.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为当我重定向时,PageA错过了对PageC的引用.有谁知道解决这个问题的方法?非常感谢你!

Joe*_*ger 1

如果页面 C 与页面 A 位于同一域中,请尝试

window.opener.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

如果没有,您需要使用 postMessage 来代替,这意味着您必须将事件序列化为字符串并侦听页面 A 上的消息。