关闭 Excel add-in/file/program 的事件或检查 opener 是否还活着
Close event of Excel add-in/file/program or check if the opener is still alive
我正在制作 Excel JavaScript API 的 Excel 插件。此插件中有一个按钮,单击它会启动
window.open("https://localhost:3000/#/new/", "popup", "width=1000, height=1100")
并弹出浏览器 window。
新页面由angularjs
构建。它可以通过 $window.opener.postMessage(msg, $window.opener.location.href)
将 postMessage
发送到加载项开启程序。现在,我想在页面中添加一个实时 flag
来指定页面是否连接到它的 opener 加载项。
比如弹出新页面时,flag显示connected
。如果我们关闭Excel文件(例如关闭Windows中的Excel程序,关闭Excel在线的浏览器选项卡,通常弹出浏览器window没有系统地关闭,但我们希望标志显示 disconnected
.
有谁知道ExcelJavaScriptAPI有没有close events of add-in/file/program
。如果是这样,我们可以在触发事件时通过 postMessage
从加载项向弹出式浏览器 window 发送一条消息。
否则,在弹出式浏览器一侧 window,检测其开启者是否仍然存在的有效方法是什么?
您是否希望 弹出窗口有时保持打开状态(并说断开连接)?或者您希望在主机加载项关闭时自动关闭它?如果你想要后者,那么使用 Dialog API.
我感觉常规卸载事件应该有效。所以将 $window 服务注入你的控制器并设置 onbeforeunload 来设置你的标志。
app.controller("MyFlagChangerController", function ($scope, $window...)){
$window.onbeforeunload = function (event) {
// Set flag
}
});
另一种方法是通过套接字。当套接字停止通信时,您会知道连接已断开,但这是一个成本更高的解决方案,我猜简单的 JS 卸载应该可以工作。
我还没有找到如何监听 Excel add-in/file/program 的关闭事件,但我找到了如何检测弹出窗口的开启者是否仍然存在:
$window.opener !== null
这很简单而且似乎是正确的(到目前为止)。
然后,至少,我们可以使用被动方式来检查开启者是否还活着,例如,通过心跳,或者当没有return 发送的消息...
我正在制作 Excel JavaScript API 的 Excel 插件。此插件中有一个按钮,单击它会启动
window.open("https://localhost:3000/#/new/", "popup", "width=1000, height=1100")
并弹出浏览器 window。
新页面由angularjs
构建。它可以通过 $window.opener.postMessage(msg, $window.opener.location.href)
将 postMessage
发送到加载项开启程序。现在,我想在页面中添加一个实时 flag
来指定页面是否连接到它的 opener 加载项。
比如弹出新页面时,flag显示connected
。如果我们关闭Excel文件(例如关闭Windows中的Excel程序,关闭Excel在线的浏览器选项卡,通常弹出浏览器window没有系统地关闭,但我们希望标志显示 disconnected
.
有谁知道ExcelJavaScriptAPI有没有close events of add-in/file/program
。如果是这样,我们可以在触发事件时通过 postMessage
从加载项向弹出式浏览器 window 发送一条消息。
否则,在弹出式浏览器一侧 window,检测其开启者是否仍然存在的有效方法是什么?
您是否希望 弹出窗口有时保持打开状态(并说断开连接)?或者您希望在主机加载项关闭时自动关闭它?如果你想要后者,那么使用 Dialog API.
我感觉常规卸载事件应该有效。所以将 $window 服务注入你的控制器并设置 onbeforeunload 来设置你的标志。
app.controller("MyFlagChangerController", function ($scope, $window...)){
$window.onbeforeunload = function (event) {
// Set flag
}
});
另一种方法是通过套接字。当套接字停止通信时,您会知道连接已断开,但这是一个成本更高的解决方案,我猜简单的 JS 卸载应该可以工作。
我还没有找到如何监听 Excel add-in/file/program 的关闭事件,但我找到了如何检测弹出窗口的开启者是否仍然存在:
$window.opener !== null
这很简单而且似乎是正确的(到目前为止)。
然后,至少,我们可以使用被动方式来检查开启者是否还活着,例如,通过心跳,或者当没有return 发送的消息...