Formas alternativas de passar mensagens para uma caixa de diálogo de sua página de host

A maneira recomendada de passar dados e mensagens de uma página pai para uma caixa de diálogo filho é com o messageChild método descrito em Usar a API de diálogo do Office em seus Suplementos do Office. Se o suplemento estiver em execução em uma plataforma ou host que não dá suporte ao conjunto de requisitos dialogApi 1.2, há duas outras maneiras de passar informações para a caixa de diálogo.

  • Armazene as informações em algum lugar acessível à janela do host e à caixa de diálogo. As duas janelas não compartilham um armazenamento de sessão comum (a propriedade Window.sessionStorage ), mas se tiverem o mesmo domínio (incluindo o número da porta, se houver), compartilharão um armazenamento local comum.

    Observação

    As alterações na segurança do navegador afetarão sua estratégia de tratamento de token.

    • Se o suplemento for executado em Office na Web no navegador Versão Prévia do Microsoft Edge (não Chromium) ou Safari, a caixa de diálogo e o painel de tarefas não compartilharão o mesmo armazenamento local, portanto, ele não poderá ser usado para se comunicar entre eles.
    • A partir da versão 115 de navegadores baseados em Chromium, como Chrome e Edge, a partição de armazenamento está sendo testada para impedir o rastreamento entre sites de canal lateral específico (consulte também políticas de navegador do Microsoft Edge). Isso significa que os dados armazenados por APIs de armazenamento, como o armazenamento local, só estão disponíveis para contextos com a mesma origem e o mesmo site de nível superior. Para contornar isso, no navegador, vá para chrome://flags ou edge://flags e defina o sinalizador Experimental de partição de armazenamento de terceiros (#third-armazenamento-particionamento) como Desabilitado. Sempre que possível, recomendamos passar dados entre a caixa de diálogo e o painel de tarefas usando os métodos messageParent e messageChild , conforme descrito em Usar a API de diálogo do Office em seus Suplementos do Office.
  • Adicionar parâmetros de consulta à URL que é transmitida para displayDialogAsync.

Usar o armazenamento local

Para usar o armazenamento local, chame o setItem método do window.localStorage objeto na página host antes da displayDialogAsync chamada, como no exemplo a seguir.

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

O código na caixa de diálogo lê o item quando ele é necessário, como no exemplo a seguir.

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

Usar os parâmetros de consulta

O exemplo a seguir mostra como transmitir dados com um parâmetro de consulta.

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

Para ver um exemplo que usa essa técnica, consulte Inserir gráficos do Excel usando o Microsoft Graph em um Suplemento do PowerPoint.

O código na caixa de diálogo pode analisar a URL e ler o valor do parâmetro.

Importante

O Office adiciona automaticamente um parâmetro de consulta chamado _host_info à URL que é passada para displayDialogAsync. (Ele é acrescentado após os parâmetros de consulta personalizados, se houver. Ele não é acrescentado a nenhuma URLs subsequente para a qual a caixa de diálogo navega.) A Microsoft pode alterar o conteúdo desse valor ou removê-lo inteiramente no futuro, portanto, seu código não deve lê-lo. O mesmo valor é adicionado ao armazenamento de sessão da caixa de diálogo (a propriedade Window.sessionStorage ). Novamente, seu código não deve ler nem gravar nesse valor.