2013-06-25 6 views
6

Ich sehe verschiedene Verhaltensweisen des HTML5 sessionStorage bei der Verfolgung von Weblinks. Manchmal wird die sessionStorage der ersten Seite auf die TargetPage kopiert, manchmal bekomme ich eine leere sessionStorage auf der TargetPage.sessionStorage in einem neuen Fenster ist nicht leer, wenn eine Verknüpfung mit target = "_ blank"

Kann mir jemand erklären, warum das der Fall ist?

den folgenden Link Gegeben:

<a href="TargetPage.html" target="_blank">link</a> 

Wenn ich den Link mit der rechten Maustaste öffnen -> "Link in neuem Tab", die session ist leer auf dem TargetPage. (Erwartet) Aber wenn ich den Link mit einem normalen Linksklick öffne, wird der SessionStorage auf die Zielseite kopiert. (Unerwartet)

Hinweis: Ich habe dieses Verhalten in Chrome und Firefox gesehen. Internet Explorer 9 bietet in beiden Fällen ein leeres sessionStorage. Das ist mein erwartetes Verhalten.

Ich habe ein jsFiddle zu demonstrieren das Verhalten erstellt: http://jsfiddle.net/P9nUv/3/

jemand eine Cross-Browser-Lösung denken kann eine leere session für neuen Browser-Tabs/Fenster, egal wie sie geöffnet habe, um sicherzustellen?

Jede Hilfe wird geschätzt!

Antwort

1

IMHO:

Ich denke, das Problem in verschiedenen browsing context ist. In W3C webStorage Spezifikation gibt es einen Absatz:

Wenn ein neues Dokument in einem Browser-Kontext geschaffen, die einen Top-Level-Browsing Kontext hat, muss die User-Agent zu überprüfen, um zu sehen, ob der Top-Level-Browsing Kontext eine Sitzung Speicherbereich für diesen Ursprung des Dokument

Document in diesem Zitat bedeutet neue Seite. Also es bedeutet, wenn Sie in der neuen Registerkarte die gleiche Seite öffnen, verwenden Sie die gleiche browsing context und die gleiche sessionStorage, aber wenn Sie in einem neuen Fenster öffnen (dh target = "_ blank") die browsing context ist anders.

OR

Das Problem der CPU getrennten Fäden sein kann, so getrennte browsing context und separater sessionStorage s.

1

Wieder einmal eine alte Frage, aber ich fand keine Antworten auf dieses Problem auf dieser Seite und ich hatte gerade das gleiche Problem mit Firefox 44. Ich eine Abhilfe gefunden und Sie können es hier finden: https://stackoverflow.com/a/35596134/3751509

Hoffe das hilft.