Firefox aktualisiert die Seite nicht korrekt, wenn sich der Status geändert hat, wenn sie nicht aktiv ist

8

Wir haben eine eckige Anwendung (SPA), die die clientseitige Benutzersitzung (Sitzungszeitüberschreitung, Inaktivitätsperiode usw.) unterhält. Die Sitzung wird verwendet, um den Benutzer zur erneuten Anmeldung zu zwingen, wenn die Sitzung aus irgendeinem Grund abläuft.

Der Ablauf der Sitzung wird von einem dedizierten Dienst gesteuert, der ein Ereignis in $ rootScope sendet, wenn die Sitzung beendet, gesperrt oder auf andere Weise geändert wird.

Wir fügen Listener zu diesen Sitzungsstatusänderungsereignissen hinzu, die das Routing auf die relevante Seite ändern (Anmeldeseite, Entsperrseite usw.). Wir verwenden angular-ui-router für das Routing.

Dies funktioniert gut, aber speziell in Firefox, wenn die Sitzungsstatusänderungen stattfinden, wenn das Browserfenster / die Registerkarte nicht aktiv ist (d. h. minimiert, im Hintergrund usw.), wird die Seite nicht korrekt aktualisiert. Mit anderen Worten, Sie können die Steuerelemente der neuen Seite sehen (z. B. Benutzername Textfeld und Passwort-Feld), aber anstatt den Hintergrund der neuen Seite zu sehen, sehen Sie die alte Seite.

Es funktioniert perfekt in Chrome und IE, wir sehen dieses Problem nur bei Firefox. Außerdem, wenn das Browserfenster / Tab aktiv ist, funktioniert es auch perfekt in Firefox.

Irgendwelche Gedanken?

    
eitanfar 28.06.2016, 04:10
quelle

1 Antwort

1

Lass es anders sein. Verwenden Sie rootScope Broadcast nicht, nehmen Sie einfach eine Variable in Ihrem Dienst mit dem aktuellen Status und geben Sie die Funktion mit diesem Wert zurück.

%Vor%

und sehen Sie es in Ihren Controllern an. Der erste Digest-Lauf wird also die Ansicht auf eine andere umschalten.

%Vor%

Wenn dies nicht hilft, vergewissern Sie sich, dass Sie $ timeout (angular natives Zeitlimit mit Digest) und kein gesetztes Zeitlimit verwenden (JS Timeouts werden gestoppt, wenn das Browserfenster / Tab nicht aktiv ist und dann alle gleichzeitig auf der Registerkarte ausgelöst) steht wieder im Fokus, was mit merkwürdigem Verhalten in Angular enden kann.

    
Alexandr Fedoseev 04.07.2016 08:28
quelle