Passer des données à une boîte de dialogue à l’aide de paramètres de stockage local ou de requête

Si votre complément s’exécute sur une plateforme ou un hôte qui ne prend pas en charge l’ensemble de conditions requises DialogApi 1.2, vous ne pouvez pas utiliser la messageChild méthode pour envoyer des données d’une page hôte à une boîte de dialogue. Utilisez plutôt l’une des approches suivantes.

  • Stockage local : écrivez des données window.localStorage dans la page hôte avant d’ouvrir la boîte de dialogue. Les deux fenêtres peuvent accéder au même stockage local si elles partagent le même domaine, y compris le numéro de port.
  • Paramètres de requête : ajoutez des paires clé-valeur à l’URL que vous passez à displayDialogAsync. La boîte de dialogue lit les valeurs lorsqu’elle s’ouvre.

Pour connaître l’approche recommandée à l’aide de messageChild, consultez Passer des informations à la boîte de dialogue.

Choisir une approche

Considération Stockage local Paramètres de requête
Taille des données Convient pour les charges utiles plus volumineuses. Idéal pour les petites valeurs.
Disponibilité des données Disponible à tout moment après l’ouverture de la boîte de dialogue. Disponible dans l’URL lors du chargement de la boîte de dialogue.

Conseil : Enregistrez les valeurs dans des variables pour les lire pendant que la boîte de dialogue reste ouverte.
Persistance dans la navigation Persiste jusqu’à ce qu’il soit explicitement effacé. Perdu si la boîte de dialogue redirige.

Utilisation du stockage local

Appelez la setItem méthode de l’objet window.localStorage dans la page hôte avant l’appel displayDialogAsync , comme illustré dans l’exemple suivant.

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

Le code dans la boîte de dialogue lit l’élément quand il est nécessaire, comme illustré dans l’exemple suivant.

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

Remarque

Les modifications apportées à la sécurité du navigateur affectent votre stratégie de gestion des jetons.

  • Si votre complément s’exécute dans Office sur le Web dans le navigateur Safari, la boîte de dialogue et le volet Office ne partagent pas le même stockage local et ne peuvent donc pas être utilisés pour communiquer entre eux.
  • À compter de la version 115 des navigateurs basés sur Chromium, tels que Chrome et Edge, le partitionnement du stockage est activé pour empêcher le suivi intersites par canal latéral spécifique (voir aussi stratégies de navigateur Microsoft Edge). Cela signifie que les données stockées par les API de stockage, telles que le stockage local, ne sont disponibles que pour les contextes ayant la même origine et le même site de niveau supérieur. Dans la mesure du possible, nous vous recommandons de transmettre des données entre la boîte de dialogue et le volet Office à l’aide des méthodes messageParent et messageChild , comme décrit dans Utiliser l’API de boîte de dialogue Office dans vos compléments Office.

Utiliser les paramètres de requête

Ajoutez des paires clé-valeur à l’URL que vous passez à displayDialogAsync. Cette approche fonctionne mieux pour les petites valeurs dont le dialogue a besoin uniquement lorsqu’il s’ouvre pour la première fois.

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

Pour obtenir un exemple qui utilise cette technique, consultez l’article relatif à l’exemple Insérer des graphiques Excel à l’aide de Microsoft Graph dans un complément PowerPoint.

Le code dans votre boîte de dialogue peut analyser l’URL et lire la valeur du paramètre.

Importante

Office ajoute automatiquement un paramètre de requête appelé _host_info à l’URL passée à displayDialogAsync. Il ajoute ce paramètre après vos paramètres de requête personnalisés, le cas échéant. Il ne s’ajoute _host_info pas aux URL suivantes auxquelles la boîte de dialogue accède. Microsoft peut modifier le contenu de cette valeur ou la supprimer entièrement à l’avenir, afin que votre code ne la lise pas. Office ajoute la même valeur au stockage de session de la boîte de dialogue (propriété Window.sessionStorage ). Là encore, votre code ne doit ni lire, ni écrire cette valeur.

Résoudre les problèmes courants

  • Si le stockage local apparaît vide dans la boîte de dialogue, vérifiez que la page hôte et la boîte de dialogue utilisent exactement la même origine.
  • Si une valeur de paramètre de requête est manquante, vérifiez qu’elle est présente dans l’URL initiale passée à displayDialogAsync.
  • Si des données sont nécessaires après les redirections dans le flux de dialogue, utilisez le stockage local ou l’état du serveur au lieu de vous appuyer uniquement sur les paramètres de requête.

Voir aussi