Я делаю надстройку Excel с помощью Excel JavaScript API. В этой надстройке есть кнопка, нажатие на которую запускает popup = window.open("https://localhost:3000/#/new/", "popup", "width=1000, height=1100")
и всплывающее окно браузера.
Во всплывающем окне я мог бы использовать следующий код для отправки сообщения надстройке:
if ($window.opener !== null) {
alert($window.opener.location.href); // https://localhost/App/Home.html?et=
$window.opener.postMessage(msg, $window.opener.location.href);
}
И в надстройке я мог бы использовать следующий код для получения сообщения из всплывающего окна:
function receiveMessage(event) {
console.log("RECEIVED: " + JSON.stringify(event.origin));
if (event.origin === ...) {
action(event.data);
}
};
Так что это работает хорошо: когда надстройка получает сообщение, она показывает RECEIVED: "https://localhost:3000"
.
Однако я понял, что если я обновлю всплывающее окно на cmd+r
, всплывающее окно все еще может отправить сообщение ($window.opener.location.href
все еще то же самое), но надстройка больше НЕ сможет его получить; RECEIVED: "https://localhost:3000"
больше НЕ отображается.
Кто-нибудь знает, что случилось и как это исправить?