12

Web リンクをたどると、HTML5 sessionStorage のさまざまな動作が見られます。最初のページの sessionStorage が TargetPage にコピーされることもあれば、TargetPage で空の sessionStorage が取得されることもあります。

なぜそうなのか、誰か説明してもらえますか?

次のリンクを考えると:

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

右クリック -> [新しいタブでリンクを開く] でリンクを開くと、TargetPage の sessionStorage が空になります。(予想) しかし、通常の左クリックでリンクを開くと、sessionStorage が TargetPage にコピーされます。(予想外)

注:この動作は Chrome と Firefox で見られます。Internet Explorer 9 は、どちらの場合も空の sessionStorage を提供します。これは私の予想される動作です。

動作を示すために jsFiddle を作成しました: http://jsfiddle.net/P9nUv/3/

どのように開かれても、新しいブラウザタブ/ウィンドウ用に空の sessionStorage を確保するためのクロスブラウザソリューションを考えられる人はいますか?

どんな助けでも大歓迎です!

4

2 に答える 2

5

私見では:

問題は別のところにあると思いますbrowsing context。W3CwebStorage仕様には次の段落があります。

トップレベルのブラウジング コンテキストを持つブラウジング コンテキストで新しい Document が作成されると、ユーザー エージェントは、そのトップレベルのブラウジング コンテキストにそのドキュメントのオリジンのセッション ストレージ領域があるかどうかを確認する必要があります。

Documentこの引用では、新しいページを意味します。したがって、新しいタブで同じページを開くbrowsing contextと、同じセッションストレージが使用されますが、新しいウィンドウ (つまり、target="_blank") で開く場合browsing contextは異なります。

また

問題は個別の CPU スレッドにある可能性があるため、個別の sbrowsing contextと個別sessionStorageの s.

于 2013-12-25T17:15:21.983 に答える
3

もう一度古い質問ですが、このサイトでこの問題に対する答えが見つかりませんでした.Firefox 44でも同じ問題がありました.回避策を見つけました.https ://stackoverflow.com/a /35596134/3751509

お役に立てれば。

于 2016-02-24T07:50:44.547 に答える