【问题标题】:Share a same popup window among different addin instances在不同的插件实例之间共享同一个弹出窗口
【发布时间】:2017-05-08 22:21:17
【问题描述】:

我正在通过Excel JavaScript API 制作 Excel 加载项。这个插件有一个按钮,点击它会启动popup = window.open("https://localhost:3000/#/new/", "popup", "width=1000, height=1100")并弹出一个浏览器窗口。

关闭工作簿或加载项不会系统地关闭弹出窗口。所以此刻,如果我再次打开工作簿和加载项,然后单击按钮,将弹出另一个浏览器窗口。

我在想是否可以对所有 excel/加载项实例始终使用相同的弹出窗口。我们可以使用localstorage 在不同的 excel/加载项实例之间共享信息,但我不确定是否可以将弹出窗口/窗口保存在那里。

有没有人有什么好主意来实现这一点?

【问题讨论】:

    标签: popup local-storage ms-office office-js window.open


    【解决方案1】:

    对于 Office 加载项,您应该使用内置的 Dialog API。此 API 可确保无论平台如何(即跨浏览器、移动和桌面客户端)都能正确处理弹出窗口。

    Dialog 对象支持close 方法,允许您从父任务窗格关闭所有打开的对话框。

    【讨论】:

    • 我的测试表明,粗暴地关闭任务窗格或excel不会系统地关闭对话框,所以我的问题也适用于对话框:如何在不同的插件实例之间共享同一个对话框窗口?
    • 您不能重复使用任何孤立的窗口,因为您不再拥有它们的句柄。您将需要在对话页面中检查其父级并在父级消失时自动关闭的逻辑。您也许可以使用messageparent 方法来做到这一点。
    • 对话框页面定期发送messageparent 进行检查的有效方法是什么?
    猜你喜欢
    • 2020-03-25
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多