Share via


Alternative Möglichkeiten zum Übergeben von Nachrichten an ein Dialogfeld von der Hostseite

Die empfohlene Möglichkeit zum Übergeben von Daten und Nachrichten von einer übergeordneten Seite an ein untergeordnetes Dialogfeld ist die messageChild -Methode, wie unter Verwenden der Office-Dialogfeld-API in Ihren Office-Add-Ins beschrieben. Wenn Ihr Add-In auf einer Plattform oder einem Host ausgeführt wird, die den DialogApi 1.2-Anforderungssatz nicht unterstützt, gibt es zwei weitere Möglichkeiten, Informationen an das Dialogfeld zu übergeben.

  • Speichern Sie die Informationen an einem Ort, auf den sowohl das Hostfenster als auch das Dialogfeld zugreifen können. Die beiden Fenster verwenden keinen gemeinsamen Sitzungsspeicher ( window.sessionStorage-Eigenschaft ), aber wenn sie dieselbe Domäne (einschließlich Portnummer, falls vorhanden) haben, teilen sie sich einen gemeinsamen lokalen Speicher.

    Hinweis

    Änderungen an der Browsersicherheit wirken sich auf Ihre Strategie für die Tokenverarbeitung aus.

    • Wenn Ihr Add-In in Office im Web im Vorgängerversion von Microsoft Edge (nicht Chromium) oder Safari-Browser ausgeführt wird, verwenden das Dialogfeld und der Aufgabenbereich nicht denselben lokalen Speicher, sodass es nicht für die Kommunikation zwischen ihnen verwendet werden kann.
    • Ab Version 115 von Chromium-basierten Browsern wie Chrome und Edge wird die Speicherpartitionierung getestet, um eine bestimmte seitenkanalübergreifende Nachverfolgung zu verhindern (siehe auch Microsoft Edge-Browserrichtlinien). Dies bedeutet, dass von Speicher-APIs gespeicherte Daten, z. B. lokaler Speicher, nur für Kontexte mit demselben Ursprung und demselben Standort der obersten Ebene verfügbar sind. Um dies zu umgehen, wechseln Sie in Ihrem Browser zu chrome://flags oder edge://flags, und legen Sie dann das Flag Experimentelle Speicherpartitionierung von Drittanbietern (#third-party-storage-partitioning) auf Deaktiviert fest. Wenn möglich, empfehlen wir, Daten zwischen dem Dialogfeld und dem Aufgabenbereich mit den Methoden messageParent und messageChild zu übergeben, wie unter Verwenden der Office-Dialogfeld-API in Ihren Office-Add-Ins beschrieben.
  • Fügen Sie Abfrageparameter zu der URL hinzu, die an displayDialogAsync übergeben wird.

Verwenden des lokalen Speichers

Um lokalen Speicher zu verwenden, rufen Sie die setItem -Methode des window.localStorage -Objekts auf der Hostseite vor dem displayDialogAsync Aufruf auf, wie im folgenden Beispiel gezeigt.

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

Code im Dialogfeld liest das Element, wenn es benötigt wird, wie im folgenden Beispiel gezeigt.

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

Verwenden von Abfrageparametern

Das folgende Beispiel zeigt, wie Daten mit einer Abfrageparameter übergeben werden.

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

Ein Beispiel, in dem diese Technik verwendet wird, finden Sie unter Einfügen von Excel-Diagrammen mit Microsoft Graph in einem PowerPoint-Add-In.

Der Code in Ihrem Dialogfeld kann die URL analysieren und den Parameterwert lesen.

Wichtig

Office fügt der URL, die an übergeben wird, automatisch einen Abfrageparameter mit dem Namen _host_info hinzu displayDialogAsync. (Es wird nach Ihren benutzerdefinierten Abfrageparametern angefügt, falls vorhanden. Es wird nicht an nachfolgende URLs angefügt, zu denen das Dialogfeld navigiert.) Microsoft kann den Inhalt dieses Werts in Zukunft ändern oder vollständig entfernen, sodass ihr Code ihn nicht lesen sollte. Der gleiche Wert wird dem Sitzungsspeicher des Dialogfelds hinzugefügt (die Window.sessionStorage-Eigenschaft ). Auch hier sollte Ihr Code diesen Wert weder lesen noch schreiben.