Vermeiden Sie die Verwendung von window.top

Kategorie: Supportfähigkeit, Upgrade-Bereitschaft, Online-Migration

Wirkungspotential: Hoch

Symptome

  • Der folgende Skriptfehler wird den Benutzern angezeigt oder in Ihre Fehlerprotokolle aufgenommen: Error: Blocked a frame with origin "https://<yourinstance>.dynamics.com" from accessing a cross-origin frame.

  • Anpassungen verhalten sich möglicherweise nicht korrekt im Kontext von Dynamics 365 App for Outlook, Dynamics 365 für Smartphones und Tablets, oder einer externen Anwendung, die den Microsoft Dataverse innerhalb eines Iframe hostet.

    Hinweis

    Es kann einige Szenarien geben, in denen die Fehlerbehandlung den Fehler maskiert und die Skriptverarbeitung fortsetzt, was zu unerwartetem Verhalten führt.

Anleitung

Vermeiden Sie die Verwendung von window.top in Skripten, die im Rahmen von Dynamics 365 App for Outlook, Dynamics 365 for Phones und Tablets oder einer externen Anwendung laufen, die Dataverse innerhalb eines Iframe hosten. Auch wenn diese Szenarien derzeit nicht für Ihr Unternehmen gelten, sollten Sie die Verwendung von window.top vermeiden oder sich vor diesem Problem schützen.

Wichtig

Die Verwendung von window.parent oder Variationen der übergeordneten Hierarchie (z. B. window.parent.parent) können die gleichen Symptome verursachen.

Im Folgenden werden die empfohlenen Ansätze aufgeführt:

  • Vermeiden Sie die Verwendung des Objekts window.top ganz.

  • Wenn die Verwendung von window.top die einzige verfügbare Option ist, testen Sie zunächst, ob window.top mit dem untenstehenden Skript zugänglich ist. Wenn es nicht verfügbar ist, bieten Sie alternative Logik oder eine Fallback-Benutzerfreundlichkeit.

    Hinweis

    Obwohl wir empfehlen, die Verwendung von window.top zu vermeiden, ist dieses Skript für diejenigen Edge-Fälle enthalten, in denen es die einzige verfügbare Option sein könnte.

    function isTopAccessible() {
        try {
                window.top.location;
                return true;
            }
            catch (err) {
                return false;
            }
    }
    
    var canAccess = isTopAccessible();
    alert(canAccess);
    

Problematische Muster

Die Verwendung von window.top sollte nach Möglichkeit vermieden werden. Im Folgenden finden Sie Beispiele für häufig vorkommende Muster.

Warnung

Diese Szenarien sollten vermieden werden.

// Getting or setting variables at the top level
var myValue = window.top.myGlobalVariable;

// Attempting to access the Xrm namespace at the top level
myValue = window.top.Xrm.Page.getAttribute("column1");

Weitere Informationen

In den genannten Szenarien bezieht sich window.top auf das Fenster, das einem Anwendungskontext außerhalb von Dynamics 365 gehört. Aufgrund der unterschiedlichen Herkunft stellt der Browser dem Benutzer einen herkunftsübergreifenden Sicherheitsfehler dar.

Siehe auch

Anwenden von Geschäftslogik mit Client-Skripting in modellgesteuerten Anwendungen mit JavaScript
Ereignisse in Formularen und in Rastern in Modell-angetriebenen Apps

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).