Альтернативные способы передачи сообщений в диалоговое окно с главной страницы

Рекомендуемый способ передачи данных и сообщений с родительской страницы в дочернее диалоговое окно — использовать messageChild метод , как описано в разделе Использование API диалога Office в надстройках Office. Если надстройка работает на платформе или узле, который не поддерживает набор требований DialogApi 1.2, можно использовать два других способа передачи информации в диалог.

  • Храните сведения в любом месте, доступном как в окне узла, так и в диалоговом окне. Два окна не имеют общего хранилища сеансов (свойство Window.sessionStorage ), но если у них один и тот же домен (включая номер порта, если он есть), они совместно используют общее локальное хранилище.

    Примечание.

    Изменения в безопасности браузера повлияют на вашу стратегию обработки маркеров.

  • Добавьте параметры запроса в URL-адрес, который передается в метод displayDialogAsync.

Использование локального хранилища

Чтобы использовать локальное setItem хранилище, вызовите метод window.localStorage объекта на главной странице перед вызовом displayDialogAsync , как показано в следующем примере.

localStorage.setItem("clientID", "15963ac5-314f-4d9b-b5a1-ccb2f1aea248");

Код в диалоговом окне считывает элемент при необходимости, как показано в следующем примере.

const clientID = localStorage.getItem("clientID");
// You can also use property syntax:
// const clientID = localStorage.clientID;

Использование параметров запроса

Используйте этот подход для небольших значений, которые требуются только при первоначальном открытии диалогового окна.

На главной странице добавьте параметры запроса к URL-адресу, переданном в displayDialogAsync.

Office.context.ui.displayDialogAsync('https://myAddinDomain/myDialog.html?clientID=15963ac5-314f-4d9b-b5a1-ccb2f1aea248');

Пример, в котором используется эта техника, см. в статье Вставка диаграмм Excel с помощью Microsoft Graph в надстройке PowerPoint.

Код в вашем диалоговом окне может проанализировать URL-адрес и прочитать значение параметра.

Важно!

Office автоматически добавляет параметр запроса с именем _host_info в URL-адрес, который передается в displayDialogAsync. Он добавляет этот параметр после пользовательских параметров запроса, если таковые есть. Он не добавляется _host_info к последующим URL-адресам, к которым переходит диалоговое окно. Корпорация Майкрософт может изменить содержимое этого значения или полностью удалить его в будущем, поэтому ваш код не должен читать его. Office добавляет то же значение в хранилище сеансов диалогового окна (свойство Window.sessionStorage ). Ваш код не должен ни считывать это значение, ни записывать в него данные.

Устранение распространенных проблем

  • Если локальное хранилище в диалоговом окне отображается пустым, убедитесь, что на главной странице и в диалоговом окне используется тот же источник.
  • Если значение параметра запроса отсутствует, убедитесь, что оно присутствует в исходном URL-адресе, переданном в displayDialogAsync.
  • Если данные требуются после перенаправлений в потоке диалога, используйте локальное хранилище или состояние сервера вместо того, чтобы полагаться только на параметры запроса.

См. также