Formas alternativas de transmitir mensagens para uma caixa de diálogo a partir da respetiva página de anfitrião
A forma recomendada de transmitir dados e mensagens de uma página principal para uma caixa de diálogo subordinada é através do messageChild
método descrito em Utilizar a API de caixa de diálogo do Office nos seus Suplementos do Office. Se o suplemento estiver em execução numa plataforma ou anfitrião que não suporte o conjunto de requisitos DialogApi 1.2, existem duas outras formas de transmitir informações para a caixa de diálogo.
Armazene as informações num local acessível tanto à janela do anfitrião como à caixa de diálogo. As duas janelas não partilham um armazenamento de sessão comum (a propriedade Window.sessionStorage ), mas se tiverem o mesmo domínio (incluindo o número da porta, se existirem), partilham um armazenamento local comum.
Observação
As alterações à segurança do browser irão afetar a sua estratégia de processamento de tokens.
- Se o seu suplemento for executado no Office na Web no browser Microsoft Edge Legado (não Chromium) ou Safari, a caixa de diálogo e o painel de tarefas não partilham o mesmo armazenamento local, pelo que não pode ser utilizado para comunicar entre eles.
- A partir da Versão 115 dos browsers baseados no Chromium, como o Chrome e o Edge, a criação de partições de armazenamento está ativada para impedir o controlo de canais laterais específicos entre sites (consulte também políticas do browser Microsoft Edge). Isto 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. Sempre que possível, recomendamos que transmita dados entre a caixa de diálogo e o painel de tarefas através dos métodos messageParent e messageChild , conforme descrito em Utilizar a API de caixa de diálogo do Office nos seus Suplementos do Office.
Adicionar parâmetros de consulta à URL que é transmitida para
displayDialogAsync
.
Usar o armazenamento local
Para utilizar o armazenamento local, chame o setItem
método do window.localStorage
objeto na página do anfitrião antes da displayDialogAsync
chamada, como 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, como no exemplo seguinte.
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
ao URL que é transmitido para displayDialogAsync
. (É anexado após os parâmetros de consulta personalizados, se existirem. Não é anexado a quaisquer URLs subsequentes para os quais a caixa de diálogo navega.) A Microsoft pode alterar o conteúdo deste valor ou removê-lo totalmente no futuro, pelo que o 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 ). Mais uma vez, o código não deve ler nem escrever neste valor.