我正在Excel JavaScript API创建Excel加载项。此加载项中有一个按钮,单击它会启动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"
不再显示。
有谁知道发生了什么以及如何解决?
答案 0 :(得分:1)
您可以尝试使用Office Add-in Dialog API而不是window.open吗?它设计用于加载项。有关概述,请参阅:Use the Dialog API