我正在使用 Safari 扩展,我希望我的扩展能够响应用户打开或关闭标签页。
我的扩展程序注入(inject)了一个脚本,该脚本在新选项卡打开时运行,并通知全局页面有一个新选项卡打开。我希望脚本在选项卡关闭时也通知全局页面。为此,我让注入(inject)的脚本设置 window.onbeforeunload
函数以调用 safari.self.tab.dispatchMessage
。这行得通,但问题是选项卡关闭并且 Javascript 在消息通过之前被杀死。例如,如果我在 dispatchMessage
之后放置一个 alert
以防止选项卡关闭,直到用户单击“确定”,消息才能正常通过,但这显然不是非常好的用户体验。
有没有办法在选项卡关闭之前购买一点额外时间,或者是否有更好的功能来覆盖这个或其他东西?
最佳答案
问题是所有消息都保存一个 (canLoad
) 是异步的。 IMO,canLoad
本身有点像 hack,但当我出于某种原因迫切需要同步消息传递时,我已经有效地使用了它。我问了一个analogous question前一段时间可能有助于说明 canLoad
解决方案/hack。
关于javascript - 在 window.onbeforeunload 中等待消息发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484576/