Autres façons de transmettre des messages à une boîte de dialogue à partir de sa page hôte
La méthode recommandée pour passer des données et des messages d’une page parente à un dialogue enfant est d’utiliser la messageChild
méthode décrite dans Utiliser l’API de boîte de dialogue Office dans vos compléments Office. 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 pouvez transmettre des informations au dialogue de deux autres façons.
Stockez les informations à un endroit accessible à la fois à la fenêtre hôte et au dialogue. Les deux fenêtres ne partagent pas de stockage de session commun (propriété Window.sessionStorage ), mais si elles ont le même domaine (y compris le numéro de port, le cas échéant), elles partagent un stockage local commun.
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 Microsoft Edge hérité (non-Chromium) ou 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 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.
ajouter des paramètres de requête à l’URL qui est transmise à
displayDialogAsync
;
Utilisation du stockage local
Pour utiliser le stockage local, appelez la setItem
méthode de l’objet window.localStorage
dans la page hôte avant l’appel displayDialogAsync
, comme 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 dans l’exemple suivant.
const clientID = localStorage.getItem("clientID");
// You can also use property syntax:
// const clientID = localStorage.clientID;
Utiliser les paramètres de requête
L’exemple suivant montre comment transmettre des données à l’aide d’un paramètre de requête.
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 qui est transmise à displayDialogAsync
. (Il est ajouté après vos paramètres de requête personnalisés, le cas échéant. Elle n’est pas ajoutée aux URL suivantes auxquelles la boîte de dialogue accède.) Microsoft peut modifier le contenu de cette valeur ou le supprimer entièrement à l’avenir, de sorte que votre code ne doit pas la lire. La même valeur est ajoutée 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.