web-dev-qa-db-ja.com

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

誰でもwindow.location.hreftop.location.hrefの違いを教えてもらえますか?

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

そして、mvcでajax呼び出しの後にリダイレクトするときにどちらが良いでしょうか?

86
Egalitarian

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

top.location.hrefwindow.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>');

結果のアラートには、test.htmlへのフルパスがあります。not about:blank。これはwindow.location.hrefが返すものです。

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

118
josh3736

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

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

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

他の2つの興味深いオブジェクトは、 selfparent です。

24
Salman A

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

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

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

9
meder omuraliev

1つ目は、「戻る」をクリックして現在のページに戻ることができる(またはできるようにする必要がある)という点で、履歴にアイテムを追加します。

2番目は現在の履歴項目を置き換えるため、その項目に戻ることはできません。

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

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

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

window.location.href = url;

よりも好まれる:

window.location = url;
6
Sachin R