localStorage in win8.1 IE11 synchronisiert nicht

8

Wir haben zwei Seiten "/ lesen" und "/ schreiben". Seite "/ Schreiben" jede Sekunde aktualisiert localStorage mit der aktuellen Uhrzeit:

%Vor%

Seite "/ read" liest gleichen Speicher:

%Vor%

Man sollte meinen, dass die Seite "/ read" dieselben Werte anzeigen sollte, die von einer anderen Seite in localStorage geschrieben werden. Aber in IE11 auf Win8.1 ist das kaputt. Die Seite "/ read" liest einen alten Wert aus dem Speicher und zeigt Ihnen den gleichen Wert an (als würde der Cache für den lokalen Speicher verwendet). Irgendwelche Ideen?

P.S. Beide Seiten befinden sich auf derselben Domain (Live-Beispiel - lesen schreiben )

    
developer 06.06.2014, 08:10
quelle

3 Antworten

4

Ich habe eine Problemumgehung für dieses Problem in Win 10 gefunden. Wenn Sie das window.onstorage-Ereignis in Ihrem Code behandeln, wird localStorage für alle geöffneten Registerkarten aktualisiert. Etwas so einfaches wie das funktionierte für mich:

%Vor%

Ich habe diesen Code nicht gründlich getestet, also tun Sie dies bitte, bevor Sie diese Methode in Produktions-Apps verwenden.

Hoffe, das hilft!

    
Christopher Brown 21.02.2017 20:17
quelle
3

Es scheint, dass die Methode localStorage.GetItem unter IE11 / Windows 8 unzuverlässig ist und frühere Werte abrufen kann. Dies kann jedoch umgangen werden, indem die localStorage.SetItem-Methode unmittelbar vor dem Abrufen eines Werts aufgerufen wird.

Ich habe es geschafft, das Problem mit dem muttonUp-Code zu replizieren und dann die folgende Änderung vorgenommen, um die beiden Fenster miteinander in Verbindung zu bringen:

%Vor%

Hier ist die Ausgabe:

Diese Problemumgehung ist in meinem Szenario nützlich, da ich in sporadischen Intervallen nur Werte von localStorage abruft und nur kleine Datenmengen speichere. Wegen des möglichen Leistungsaufwands mit der erhöhten Anzahl von setItem-Methodenaufrufen würde ich wahrscheinlich sorgfältig darüber nachdenken, bevor diese Problemumgehung verwendet wird, bei der der Datenverkehr von und zu localStorage schwerer ist.

    
KevD 23.11.2016 17:06
quelle
2

Nicht so sehr eine Antwort, sondern weitere Untersuchungen. Auf der folgenden Seite kann dieses Problem leicht getestet werden, indem auf einem Webserver gehostet und in verschiedenen Tabs geöffnet wird. Klicken Sie dann auf den Button in one der Registerkarten.

%Vor%

Ergebnisse in Chrome / Firefox / Safari unabhängig vom Betriebssystem sind vorhersehbar gleich. Sie zeigen, dass localStorage über die Seiten vom selben Ursprung gemeinsam genutzt wird.

Auf IE11 auf Windows 7, gibt auch die gleichen Ergebnisse.

Nach dem, was ich gelesen habe, scheint dies der Spezifikation zu entsprechen, Punkt 3 hier Ссылка

Aber ...

  • IE 11 unter Windows 8.1 zeigt separate localStorage-Bereiche für denselben Ursprung.

  • Microsoft Edge unter Windows 10 (10162), hat das gleiche Problem. Die Tatsache, dass IE11 "korrektes" Verhalten auf Windows 7 zeigt, deutet darauf hin, dass das Betriebssystem dort ist, wo das Problem liegt?

muttonUp 09.07.2015 13:04
quelle