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;
}
}
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.
Mobile version