Надстройки Office365 — как общаться между надстройками Windows

Я работаю над надстройкой содержимого Javascript Office365 для PowerPoint, и у меня возникают проблемы с обменом сообщениями.

В отличие от Word или Excel, в одном документе, скорее всего, будет использоваться несколько надстроек. Например. Один на слайде 3, один на слайде 5.

У меня есть 2 сценария, которые не работают хорошо.

  • Использование веб-клиента Office365 (отлично работает в нативном режиме) — если что-то изменилось в режиме слайд-шоу, это не отражается автоматически при возврате к этому слайду в режиме конструктора.
  • Веб-клиент и собственный — если пользователь выходит из системы на одном слайде, я не могу заставить надстройки на других слайдах также автоматически выходить из системы.

Что я уже пробовал:

Я мог бы препятствовать сердцебиению или веб-сокетам, но предпочел бы избегать ненужного обращения к серверу и хотел бы, чтобы все было как можно проще. В качестве альтернативы я мог бы поместить что-то в локальное хранилище и использовать setInterval для проверки, но это добавит ненужную фоновую работу и замедлит работу приложения.

Существуют ли какие-либо «хорошие» способы решения вышеупомянутых проблем, или проверка setInterval/localstorage является единственным простым решением на данный момент?


person HockeyJ    schedule 09.06.2016    source источник
comment
Мне пришлось использовать опцию setTimeout/localStorage. 'setTimeout' лучше, чем setInterval как setInterval в этом случае (stackoverflow.com/questions/ 729921/settimeout-or-setinterval). Не идеальное решение, но оно работает. Пока не собираюсь закрывать этот вопрос, так как в более поздней версии API может быть добавлено событие, которое делает это возможным (например, в соответствии с ответом @michael mainers ниже).   -  person HockeyJ    schedule 16.06.2016


Ответы (2)


Вы можете попробовать использовать свойство document.settings. вместо локального хранилища. Существует событие settingsChanged, которое может помочь вам сделать то, что вы ищете. Я никогда не использовал его раньше, поэтому дайте нам знать, если это поможет (или нет).

На момент публикации событие settingsChanged доступно только для Excel.

person Michael Mainer    schedule 09.06.2016
comment
Попробую. Спасибо. - person HockeyJ; 10.06.2016
comment
Никакой радости пока. Метод был бы отличным, но на данный момент он поддерживается только в Excel. dev.office.com/reference/add-ins/shared/ - person HockeyJ; 10.06.2016
comment
Это прискорбно. Вы можете озвучить свой сценарий через officespdev.uservoice.com. Добавьте запрос на эту функцию в этом месте. - person Michael Mainer; 10.06.2016

Просматривая документацию, кажется, что такого рода вещи могут быть достигнуты с помощью refreshAsync< /а>.

person HockeyJ    schedule 23.06.2016