window.location.href、window.location.replace、window.location.assignの違い


128

違いは何ですか

  1. window.location.href="http://example.com";
  2. window.location.replace("http://example.com");
  3. window.location.assign("http://example.com");

window.location.assign()現在のセッション履歴を置き換えるだけのフォーラムをたくさん読んだので、ブラウザの戻るボタンが機能しません。しかし、これを再現することはできません。

function fnSetVariable() {
    //window.location.href = "http://example.com";
    window.location.replace("http://example.com");
    //window.location.assign("http://example.com");
}

<a onmouseover="fnSetVariable();" 
   href="PageCachingByParam.aspx?id=12" >
   CLICK 
</a>

1
あなたは、URL内の古い記事を見ることができます:stackoverflow.com/questions/1865837/...はそれが役に立つことを願っています

ここでは、より良い説明があります:stackoverflow.com/a/847130/96656
マティアスBynens

回答:


165

これらは同じことを行います:

window.location.assign(url);
window.location = url;
window.location.href = url;

新しいURLに移動するだけです。replace一方、このメソッドは、履歴に新しいレコードを追加せずにURLに移動します。

したがって、これらの多くの形式で読んだことは正しくありません。このassignメソッドは、履歴に新しいレコードを追加します。

リファレンス:http : //developer.mozilla.org/en/window.location


1
答えてくれてありがとう。ブラウザの戻るボタンの問題を解決するのに大いに役立ちました。
santosh kumar patro 2013

@blunderboy:とにかく地すべりの一番の答えなので、状況は変わりません。
BoltClock

それで、ポイントはassign()何ですか?この回答とドキュメントから、それはと同じように聞こえlocation = ...ます。
Mitya

11

[戻る]ボタンを使用できないことに関する部分は、よくある誤解です。window.location.replace(URL)は、新しい1つのエントリで上書きすることにより、ページ履歴リストから1つ上のエントリを破棄するため、ユーザーはその1つの特定のWebページに簡単に戻ることができません。この機能ではページ履歴リスト全体が消去されることはなく、[戻る]ボタンが完全に機能しなくなることもありません。

(私が知っている機能もパラメータの組み合わせも、あなたが特定のものに対して絶対に所有しいない履歴リストのエントリを変更または上書きする可能性があります -ブラウザは通常、ページ履歴リストの一番上のものです。そのような機能が存在した場合、マルウェアがどんなひどいことをするのかと考えると身震いします。)

本当に「戻る」ボタンを機能させたくない場合(おそらく「ユーザーフレンドリー」ではない:それが本当にやりたいことかどうかをもう一度考えてください)、新しいウィンドウを「開いて」ください。(あなたは「オープン」ポップアップはそれがさえていないことができていあまりにも「戻る」ボタンを...しかし、ポップアップは、これらの日は非常に人気がありません:-)あなたは、ユーザーが何をするかに関係なく(表示ページを維持したい場合繰り返しになりますが、「ユーザーフレンドリー」には問題があります)。window.onunloadハンドラーをセットアップして、ページを最初からリロードするだけで、毎回最初からクリアします。


4
'私が知っている関数やパラメータの組み合わせは、履歴リストのエントリを変更または上書きする可能性があります' ... HTML5へようこそ
SpYk3HH

6
所有していないブラウザの履歴エントリを変更または上書きできないことは、長い間使用されてきたセキュリティルールです。HTML5は単にそのルールを継続します。
チャックコラーズ2014

あなたはむしろポイントや皮肉を逃しました。html5と履歴を
調べる
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.