两个任务窗口的通信

时间:2017-07-04 03:22:42

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

我正在创建一个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.iopage2发送消息。这有点乏味。

有没有人知道用于Office的JavaScript API是否已经有任何简单(和跨平台)的方式来允许两个任务窗口之间进行此类通信?

PS:使用StorageEvent localStorage并不是一个好主意,因为它似乎无法在Excel for Mac或Windows中使用。

1 个答案:

答案 0 :(得分:1)

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

相关问题