两个任务窗格的通信
Communication of two taskpanes
我正在制作一个包含两个功能区按钮的 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: 使用 localStorage
的 StorageEvent
不是一个好主意,因为它似乎在 [=40 中不起作用=] Mac 或 Windows.
暂时没有很好的解决办法。对于 Script Lab,我们使用本地存储和计时器在不支持事件 (IE 11) 的 platforms/browsers 上每秒检查几次时间戳。本地存储的问题与其说是对计时器的需求,不如说是您不能真正将其限定为一组特定的任务窗格。相反,它最终也会影响其他文档上的任务窗格。对于脚本实验室,我们决定接受这种行为,而不是将精力花在基于服务器的通信上(我假设你的意思是 socket.io 或类似的?)
我正在制作一个包含两个功能区按钮的 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: 使用 localStorage
的 StorageEvent
不是一个好主意,因为它似乎在 [=40 中不起作用=] Mac 或 Windows.
暂时没有很好的解决办法。对于 Script Lab,我们使用本地存储和计时器在不支持事件 (IE 11) 的 platforms/browsers 上每秒检查几次时间戳。本地存储的问题与其说是对计时器的需求,不如说是您不能真正将其限定为一组特定的任务窗格。相反,它最终也会影响其他文档上的任务窗格。对于脚本实验室,我们决定接受这种行为,而不是将精力花在基于服务器的通信上(我假设你的意思是 socket.io 或类似的?)