Событие Javascript отправлено во всплывающем окне, которое было перенаправлено

У меня есть страница 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);

Страница B:

location.href = "PageC.aspx";

PageC:

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

window.dispatchEvent(event);

Но это не работает, потому что когда я перенаправляю, PageA пропускает ссылку на PageC. Кто-нибудь знает способ это исправить? Большое спасибо!

1 ответ

Если страница C находится в том же домене, что и страница A, попробуйте

window.opener.dispatchEvent(event);

Если нет, вам нужно вместо этого использовать postMessage, что означает, что вы должны сериализовать ваше событие в строку и прослушивать сообщения на странице A.

Другие вопросы по тегам