Связь двух панелей задач

Я делаю надстройку 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 или подобное?)

Другие вопросы по тегам