Связь двух панелей задач
Я делаю надстройку 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 для Office уже какой-либо простой (и кроссплатформенный) способ разрешения такой связи между двумя областями задач?
PS: используя StorageEvent
из localStorage
это не очень хорошая идея, потому что она не работает в Excel для Mac или для Windows.
1 ответ
На данный момент нет отличного решения. Для Script Lab мы используем локальное хранилище и таймер, чтобы проверять отметку времени пару раз в секунду на платформах / браузерах, которые не поддерживают события (IE 11). Проблема с локальным хранилищем заключается не столько в необходимости таймеров, сколько в том, что вы не можете на самом деле ограничить его только определенным набором областей задач. Вместо этого он влияет на панели задач и на другие документы. Для скриптовой лаборатории мы решили жить с таким поведением, вместо того, чтобы тратить энергию на общение на сервере (я полагаю, вы имеете в виду socket.io или подобное?)