2015-10-12 9 views
6

プログラミングのチャレ​​ンジで私は最近、データを保存/操作するためにwindow.nameプロパティを使用しなければなりませんでした。私は、このプロパティを変更すると、同じURLで新しいページを開くときではなく、ページのリフレッシュを続けていることがわかりました。なぜwindow.nameがキャッシュされていますか?

これは私が見つけることができる唯一の情報であり、これは一部のフレームワークでデータストレージとして使用されていましたが、私はその理由に興味があります(なぜならwindow.nameは永続的ですか?どのように(window.nameがページ変更の間に保存されているのか、それが破棄されるのかのルールはありますか?)

明らかに私のGoogle-fuは、これらの質問に対する回答を見つけるのに十分ではありません(MDNページにも言及されていません)。

おかげで、デビッド

答えて

1

私の理解は、ウィンドウオブジェクトはタブの存続期間中永続的であり、異なるHTMLドキュメントをロードしているウィンドウを表しているということです。

各タブでは、別のページへ/から移動する場合でも、あなたが別のタブにチェックするとwindow.nameは異なるものになるのに対し、ウィンドウオブジェクトは、永続的である理由である、独自のwindowオブジェクトが含まれています。

異なるHTMLページを開くと、そのほとんどはwindow.nameプロパティよりも優先されず、完全にオプションです。それ以外のものがそれを操作していなければ、それはあなたがそのままにしておくことになります。ほとんどのページでは、window.documentを操作するだけです。

0

という名前のWindowsは1のため、リンクターゲットとして使用されます。

<a href="example.html" target="some_page">some page</a> 
リンクは一度新しいウィンドウで開きますし、同じウィンドウ内に、それはまだ、その後に存在する場合

クリックすると、そのウィンドウの名前がどのようにターゲットにされます。

window.openの2番目の引数もウィンドウ名です。

window.open('example.html', 'some_page'); 

関連のないウェブサイトのブラウザで試すことができます。 1つのタブのコンソールでwindow.name = 'test';と設定し、もう1つではwindow.open('https://example.com/', 'test');を使用します。関連するタブはhttps://example.com/に移動する必要があります(ポップアップブロッカーを通過させる必要があります)。

関連する問題