Verhalten bei der Weitergabe von localStorage-Werten zwischen Tabs geändertJavaScript

Javascript-Forum
Anonymous
 Verhalten bei der Weitergabe von localStorage-Werten zwischen Tabs geändert

Post by Anonymous »

Mir ist kürzlich aufgefallen, dass localStorage.getItem() in einer Registerkarte Änderungen, die von localStorage.setItem() in einer anderen Registerkarte vorgenommen wurden, sofort widerspiegelt, ohne dass ein Speicherereignis-Listener erforderlich ist. Ich sehe dieses Verhalten sowohl in Chrome als auch in Firefox. Dies scheint eine aktuelle Änderung zu sein – mein Code funktionierte bis etwa November 2025 korrekt.
Das Problem:
Ich verwende einen BroadcastChannel, um Tabs zu benachrichtigen, wenn sich ein Benutzer ändert. Jeder Tab führt diesen Code aus, wenn er benachrichtigt wird:

Code: Select all

checkIfUserChanged(user: User) {
let currentUserSub = user.profile.sub;
let previousUserSub = localStorage.getItem(this.user_change_key);
if (currentUserSub !== previousUserSub) {
localStorage.setItem(this.user_change_key, currentUserSub);
window.location.href = AppConstants.webRoot;
}
}
Früher: Wenn Tab A Benutzer wechselte und localStorage aktualisierte, gab localStorage.getItem() von Tab B den alten Wert zurück und löste das Neuladen aus.
Jetzt: LocalStorage.getItem() von Tab B gibt sofort den neuen Wert zurück, der von Tab A geschrieben wurde, also currentUserSub === previousUserSub und das Neuladen nie passiert. Dies führt zu einem „gemischten Benutzer“-Status mit Daten von beiden Benutzern.
Frage: Hat Chrome/Firefox kürzlich geändert, wie localStorage-Lesevorgänge tabellarübergreifend synchronisiert werden? Ich verstehe, dass dieses Verhalten möglicherweise spezifikationskonformer ist, aber ich suche nach Dokumentation darüber, wann sich dies geändert hat.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post