Benutzerdefinierte Seite des AEM-Autoren-Servlets bleibt beim Laden von Spinner in der Experience Cloud-Shell hängen
Erfahren Sie, wie Sie das Problem beheben können, dass benutzerdefinierte Servlet-Seiten in der AEM-Autoreninstanz beim Zugriff über den Experience Cloud Shell-iFrame auf einem Ladeschleuderrad hängen bleiben.
Beschreibung description
Beim Zugriff auf ein benutzerdefiniertes Servlet oder eine HTML-Seite über die AEM-Autoreninstanz wird die Seite in einem Experience Cloud-Shell-iframe geladen. In diesem Szenario wird die Seite auf einer Ladestromspinner-Überlagerung festgehalten, obwohl der HTML-Inhalt im iframe vorhanden ist. Dieses Problem ist über mehrere Benutzer hinweg reproduzierbar, wenn Unified Shell aktiviert ist, und es gibt keine aktuellen Änderungen am Servlet-Code. Zusätzliche URL-Parameter (wie _mr und shell_domain) werden automatisch angehängt. Wenn Sie dieselbe Servlet-URL direkt in einer neuen Browser-Registerkarte (außerhalb des Unified Shell-Kontexts) öffnen, wird die Seite ohne das Rotationsfenster korrekt gerendert. Wenn Sie Unified Shell deaktivieren oder über den direkten Ressourcenpfad auf das Servlet zugreifen, kann die Seite auch wie erwartet gerendert werden.
Umgebung
- Adobe Experience Manager (AEM) Author
- AEM as a Cloud Service (AEMaaCS)- und On-Premise-Bereitstellungen
Symptome
- Die benutzerdefinierte Servlet-Seite bleibt beim Zugriff über den Experience Cloud Shell-iFrame hinter einer Ladestromspinner-Überlagerung verborgen.
- HTML-Inhalte sind im IFrame vorhanden, sind jedoch nicht sichtbar.
- Der direkte Zugriff auf die Servlet-URL (außerhalb der Shell) funktioniert erwartungsgemäß.
Ursache
Die Experience Cloud Unified Shell erwartet, dass geladene Seiten ein Signal für Inhaltsbereitschaft ausgeben, um die Spinner-Überlagerung zu schließen. Benutzerdefinierte Servlet-Antworten, die das standardmäßige AEM-Editor-Framework JavaScript nicht laden, senden dieses Signal nicht, wodurch das Spinners unbegrenzt bleibt. Durch den direkten Zugriff auf das Servlet (außerhalb der Shell) wird dieses Problem vermieden.
Lösung resolution
Gehen Sie wie folgt vor, um das Problem zu beheben:
- Zugreifen auf das benutzerdefinierte Servlet über die Experience Cloud Shell-Route (z. B.:
/ui#/aem/your/servlet/path). - Beobachten Sie, ob die Seite auf der Überlagerung des Ladeschleuderdrehers bleibt, obwohl der HTML-Inhalt im iframe vorhanden ist.
- Kopieren Sie die vollständige Servlet-URL (einschließlich aller angehängten Parameter) aus der Registerkarte Netzwerk des Browsers.
- Öffnen Sie diese URL direkt in einer neuen Browser-Registerkarte (außerhalb des Unified Shell-Kontexts).
- Vergewissern Sie sich, dass die Seite ohne das Zahlenauswahlfeld erfolgreich gerendert wurde.
- Aktualisieren Sie alle Links, Lesezeichen oder Navigationspfade, sodass sie direkt auf den Servlet-Ressourcenpfad verweisen (z. B.:
/content/your/site/servlet.html), wobei die Unified Shell umgangen wird. - Wenn Unified Shell für andere Teile Ihrer AEM-Umgebung erforderlich ist, beschränken Sie diese Problemumgehung auf den benutzerdefinierten Servlet-Workflow. Stellen Sie sicher, dass Benutzende auf das Servlet über einen einfachen Link oder auf einer separaten Browser-Registerkarte zugreifen, nicht über die Navigationsseite/Inhaltsstruktur von AEM, die die in der Shell eingeschlossene Route generiert.
- (Optional) Überprüfen Sie den Client-seitigen Code in der Servlet-Ausgabe, der von
window.top,window.parentoder ähnlichen Konstrukten abhängen kann, da diese sich innerhalb des Unified Shell-iframe anders verhalten können.
Nach der Anwendung dieser Problemumgehung sollten Benutzende in der Lage sein, auf die benutzerdefinierte Servlet-Seite zuzugreifen, ohne auf den fixierten Ladestecker stoßen zu müssen.