2016-06-20 11 views
1

Ich finde einen Unterschied zwischen Chrome und Firefox in Bezug auf Sitzungsspeicher. Ich weiß nicht, ob es etwas ist, was ich falsch mache oder ob das das Verhalten eines jeden ist.Gibt es einen Unterschied im Sitzungsspeicherverhalten zwischen Chrome und Firefox?

Situation: Ich brauche den Sitzungsspeicher nach Tab und nicht nach Fenster zu arbeiten. Im Firefox bekomme ich dieses Ergebnis, aber nicht in Chrom. Hier ist eine Plunker ich die Situation zu simulieren gemacht: plunker

if(!($scope.fooBarKey = sessionStorage.getItem('fooBarKey'))) { 
    $scope.fooBarKey = Math.floor(Math.random() * 900000) + 100000; 
    sessionStorage.setItem('fooBarKey', $scope.fooBarKey); 
} 

Danke fürs Zuhören


Obs: auf eine Frage von charlietfl antworten

Wenn Sie meine Plunker in 3 Registerkarten auf Chrom öffnen Der Wert, der gespeichert und wiederhergestellt wird (für jede Registerkarte), ist derselbe. Wenn Sie 3 Registerkarten auf Firefox öffnen, ist der Wert, der gespeichert und wiederhergestellt wird (für jede Registerkarte) unterschiedlich

+0

Bitte präzisieren Sie die Unterschiede, denen Sie begegnen. Wir sollten nicht auf die Baustelle gehen müssen, um das Problem vollständig zu verstehen. – charlietfl

+0

@charlietfl Wenn Sie meinen Plunker in 3 Tabs auf Chrome öffnen, ist der Wert, der gespeichert und wiederhergestellt wird (für jede Registerkarte), derselbe. Wenn Sie 3 Registerkarten auf Firefox öffnen, ist der Wert, der gespeichert und wiederhergestellt wird (für jede Registerkarte), unterschiedlich. – ThCC

+0

Und was sind Ihre Erwartungen? Beachten Sie, dass Ihr 'if' einen ungültigen Vergleich verwendet. Ganz und gar nicht sicher, was dieser Code erwartet wird – charlietfl

Antwort

0

Nach ein paar Studien und einige weise Männer um Hilfe hier bei der Arbeit zu fragen, kam ich zu verstehen, was ich falsch gemacht habe.

Tatsächlich hat jede Chrom-Sitzung ihre eigene sessionStorage. Das Problem ist, dass ich Registerkarten dupliziere, anstatt ein neues zu öffnen. Der chrome, um eine Registerkarte zu duplizieren, verwendet die Datei window.open und generiert eine Tochter-Registerkarte, die alle Informationen von ihrem übergeordneten Element einschließlich sessionStorage teilt.

Verwandte Themen