javascript - 在 window.onbeforeunload 中等待消息发送?

标签 javascript safari safari-extension

我正在使用 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/

相关文章:

javascript - 如何增加 bigvideo.js 的加载时间?

macos - 与 Safari 6 相比,OS X WebView 中的 <canvas> 元素慢两倍

Safari 本地主机权限被阻止

safari - -webkit-transform CSS 属性软管字体渲染

xcode - 如何在不发布应用程序的情况下为 Safari 创建扩展?

ios - "Quit and Open safari extension preferences"按钮不起作用。 (将 Chrome 扩展程序转换为 Safari Web 扩展程序时)

javascript - Firebase 匿名身份验证如何生成 UID?

javascript - 我可以使用javascript将提示输入中的第一个字母大写吗

javascript - 更改 onclick 按钮的功能(使用另一个功能)

html - 滚动时在 iOS Safari 上出现奇怪的阻塞