Transmitir dados para uma caixa de diálogo com o armazenamento local ou parâmetros de consulta

Se o suplemento for executado numa plataforma ou anfitrião que não suporte o conjunto de requisitos DialogApi 1.2, não poderá utilizar o messageChild método para enviar dados de uma página de anfitrião para uma caixa de diálogo. Em vez disso, utilize uma das seguintes abordagens.

  • Armazenamento local – escreva dados window.localStorage na página do anfitrião antes de abrir a caixa de diálogo. Ambas as janelas podem aceder ao mesmo armazenamento local se partilharem o mesmo domínio, incluindo o número da porta.
  • Parâmetros de consulta – anexe pares chave-valor ao URL que passa para displayDialogAsync. A caixa de diálogo lê os valores quando é aberta.

Para obter a abordagem recomendada com messageChild, consulte Transmitir informações à caixa de diálogo.

Escolher uma abordagem

Considerações Armazenamento local Parâmetros de consulta
Tamanho dos dados Adequado para payloads maiores. Melhor para valores pequenos.
Disponibilidade de dados Disponível em qualquer altura após a abertura da caixa de diálogo. Disponível no URL quando a caixa de diálogo é carregada.

Sugestão: guarde os valores nas variáveis para os ler enquanto a caixa de diálogo permanecer aberta.
Persistência na navegação Persiste até ser explicitamente desmarcado. Perdido se a caixa de diálogo for redirecionada.

Usar o armazenamento local

Chame o setItem método do window.localStorage objeto na página do anfitrião antes da displayDialogAsync chamada, conforme mostrado no exemplo seguinte.

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

O código na caixa de diálogo lê o item quando for necessário, conforme mostrado no exemplo seguinte.

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

Observação

As alterações à segurança do browser irão afetar a sua estratégia de processamento de tokens.

Usar os parâmetros de consulta

Acrescente pares chave-valor ao URL que transmite para displayDialogAsync. Esta abordagem funciona melhor para valores pequenos de que a caixa de diálogo só precisa quando é aberta pela primeira vez.

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 ao URL transmitido para displayDialogAsync. Acrescenta este parâmetro após os parâmetros de consulta personalizados, se existirem. Não acrescenta _host_info a quaisquer URLs subsequentes para os quais a caixa de diálogo navega. A Microsoft poderá alterar o conteúdo deste valor ou removê-lo totalmente no futuro, pelo que o seu código não deve lê-lo. O Office adiciona o mesmo valor ao armazenamento de sessões da caixa de diálogo (a propriedade Window.sessionStorage ). Mais uma vez, o código não deve ler nem escrever neste valor.

Resolver problemas comuns

  • Se o armazenamento local aparecer vazio na caixa de diálogo, verifique se a página do anfitrião e a caixa de diálogo utilizam exatamente a mesma origem.
  • Se um valor do parâmetro de consulta estiver em falta, confirme que está presente no URL inicial transmitido para displayDialogAsync.
  • Se forem necessários dados após redirecionamentos no fluxo de caixa de diálogo, utilize o armazenamento local ou o estado do servidor em vez de depender apenas de parâmetros de consulta.

Confira também