【问题标题】:Communication of two taskpanes两个任务窗格的通信
【发布时间】:2017-07-04 03:22:42
【问题描述】:

我正在制作一个具有两个功能区按钮的 Office 加载项。每个按钮都链接到不同的TaskpaneId,单击每个按钮会打开不同的任务窗格:

<bt:Urls>
    <bt:Url id="Contoso.Taskpane1.Url" DefaultValue="https://localhost:3000/addin/page1" />
    <bt:Url id="Contoso.Taskpane2.Url" DefaultValue="https://localhost:3000/addin/page2" />
</bt:Urls>

现在,我想实现这两个页面之间的一些通信。例如,在对page1 进行一些操作后,我希望自动刷新page2(从服务器或localStorage 重新加载数据)。结果,当我们点击page2时,它已经是最新的了。目前还没有系统更新,要刷新page2,我们必须点击它的功能区按钮。

https://localhost:3000/ 是用 mean-stack 构建的,所以页面使用 angularjs 并且后面有一个服务器。两个页面的一种通信方式是通过服务器:page1 通过socket.io 向服务器发送消息,然后服务器通过socket.io 向page2 发出消息。这有点乏味。

有谁知道 JavaScript API for Office 是否已经有任何简单(和跨平台)的方式来允许在 2 个任务窗格之间进行这种通信?

PS:使用StorageEvent 或localStorage 不是一个好主意,因为它似乎不适用于Mac 或Windows 的Excel。

【问题讨论】:

    标签: javascript ms-office office-js office-addins office-app


    【解决方案1】:

    目前没有很好的解决方案。对于Script Lab,我们使用本地存储和计时器在不支持事件(IE 11)的平台/浏览器上每秒检查几次时间戳。本地存储的问题不在于对计时器的需求,而在于您不能真正将其范围限定为一组特定的任务窗格。相反,它最终也会影响其他文档上的任务窗格。对于脚本实验室,我们决定接受这种行为,而不是将精力花在基于服务器的通信上(我假设您的意思是 socket.io 或类似的?)

    【讨论】:

    • 是的,我使用socket.io,到目前为止它工作正常...因此,将不胜感激围绕 Office 加载项的简单跨平台事件处理/消息...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    相关资源
    最近更新 更多