誰でもwindow.location.href
とtop.location.href
の違いを教えてもらえますか?
また、どこを使用するか。
そして、mvcでajax呼び出しの後にリダイレクトするときにどちらが良いでしょうか?
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>');
結果のアラートには、test.htmlへのフルパスがあります。not about:blank。これはwindow.location.href
が返すものです。
リダイレクトに関する質問に答えるには、window.location.assign(url);
を使用します
top
は、現在のすべてのフレーム(残りのウィンドウの父)を含むウィンドウオブジェクトを指します。 window
は現在のwindow
です。
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
したがって、top.location.href
にはすべてのフレームを含む「マスター」ページリンクを含めることができますが、window.location.href
には「現在の」ページリンクのみを含めることができます。
1つ目は、「戻る」をクリックして現在のページに戻ることができる(またはできるようにする必要がある)という点で、履歴にアイテムを追加します。
2番目は現在の履歴項目を置き換えるため、その項目に戻ることはできません。
window.location
を参照してください:
assign(url)
:指定されたURLでドキュメントをロードします。
replace(url)
:現在のドキュメントを指定されたURLのドキュメントに置き換えます。 assign()
メソッドとの違いは、replace()
を使用した後、現在のページがセッション履歴に保存されないことです。つまり、ユーザーは[戻る]ボタンを使用してそのページに移動できません。
window.location.href = url;
よりも好まれる:
window.location = url;