window.location.hrefとtop.location.hrefの違い


92

window.location.hrefとの違いを誰かに教えてもらえtop.location.hrefますか?

また、どこを使用するか。

そして、mvcのajax呼び出しの後にリダイレクトする場合、どちらが優れていますか?


私は.net MVCの新しいURLにリダイレクトする必要があったことを言及するのを忘れていました。
平等主義者2010

回答:


125

window.location.href 現在のページの場所を返します。

top.location.href(のエイリアスwindow.top.location.href)は、ウィンドウ階層の最上位ウィンドウの位置を返します。ウィンドウに親がない場合topは、それ自体への参照です(つまり、window=== window.top)。

topフレームを扱うときと、他のページによって開かれたウィンドウを扱うときの両方に役立ちます。たとえばtest.html、次のスクリプトで呼び出されるページがあるとします。

var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');

結果のアラートには、about:blankではなく test.htmlへの完全なパスwindow.location.hrefが返されます。

リダイレクトに関する質問に答えるには、 window.location.assign(url);


3
それが呼び出すために正確であるエイリアスのを?いわゆる「グローバル」変数は実際にはのプロパティ省略形であると思いましたが、エイリアスはそれが同じ場所を指す独立した変数であることを示唆しています。top.location.hrefwindow.top.location.hrefwindow
just.another.programmer

25

topオブジェクトはフレーム内でより意味があります。フレーム内でwindowは、現在のフレームのウィンドウをtop指し、フレームを含む最も外側のウィンドウを指します。そう:

window.location.href = 'somepage.html';somepage.htmlフレーム内にロードすることを意味します。

top.location.href = 'somepage.html';somepage.htmlメインブラウザウィンドウにロードすることを意味します。

他の2つの興味深いオブジェクトはselfおよびparentです。


9

topすべての現在のフレーム(残りのウィンドウの親)を含むウィンドウオブジェクトを参照します。window現在のwindowです。

http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific

そのためtop.location.href、すべてのフレームを含む「マスター」ページリンクを含めることができますwindow.location.hrefが、「現在の」ページリンクのみを含めることができます。


7

1つ目は、「戻る」をクリックして現在のページに戻ることができる(またはできるはずです)ことで、履歴に項目を追加します。

2番目は、現在の履歴アイテムを置き換えるため、元に戻すことはできません。

を参照してくださいwindow.location

  • assign(url):指定されたURLでドキュメントをロードします。

  • replace(url):現在のドキュメントを、提供されたURLにあるドキュメントに置き換えます。このassign()方法との違いはreplace()、現在のページを使用した後はセッション履歴に保存されないため、ユーザーは[戻る]ボタンを使用してそのページに移動できないことです。

window.location.href = url;

よりも支持されています:

window.location = url;

CORSの問題については機能しません...これを解決するにはどうすればよいですか?
Pra_A 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.