Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.localStoragena 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.
- Se o suplemento for executado no Office na Web no browser 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 de browsers baseados em 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 as 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.
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.