1

我正在制作一个具有两个功能区按钮的 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/是用平均堆栈构建的,所以页面使用angularjs并有一个服务器。两个页面的一种通信方式是通过服务器:向服务器page1发送消息socket.io,然后服务器通过socket.io向发送消息page2发出消息。这有点乏味。

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

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

4

1 回答 1

1

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

于 2017-07-04T05:09:55.493 回答