306

これらの2つの線の間に違いはありますか?

var url = "http://www.google.com/";
window.location = url;
window.location.replace(url);
4

3 に答える 3

453

window.location[戻る]をクリックして現在のページに戻ることができる(またはできるはずの)アイテムを履歴に追加します。

window.location.replace現在の履歴アイテムを置き換えて、元に戻せないようにします。

参照してくださいwindow.location

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

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

ああ、一般的に言えば:

window.location.href = url;

優先されます:

window.location = url;
于 2009-12-08T09:41:47.827 に答える
0

起源と解決策

質問

これら2つの行に違いはありますか?
window.location = "http://www.google.com/";
window.location.replace("http://www.google.com/");

簡潔な答え

はい。

背景の事実

まず、次のことを知りたいです。

window.location = "https://stackoverflow.com"は のエイリアスであるwindow.location.href = "https://stackoverflow.com"ため、同じ機能を持ちます。

window.locationVSwindow.location.replace

window.location:

ここで、私はwindow.location = "https://website.com"その文脈で次のように扱っていますwindow.location.href = "https://website.com"

  • location オブジェクトの href プロパティには、現在の Web ページの URL が格納されます。
  • href プロパティを変更すると、ユーザーは新しい URL に移動します。
  • これにより、履歴リストに項目が追加されます
  • 次のページに移動した後、ユーザーはブラウザの [戻る] ボタンをクリックしてこのページに戻ることができます

window.location.replace:

  • 置換機能は、履歴にレコードを追加せずに新しい URL に移動するために使用されます。
  • この関数は、最上位のエントリを上書きし、履歴スタックから置き換えます。
  • 「戻る」ボタンをクリックすると、次のページに移動した後、リダイレクト前に最後にアクセスしたページに戻ることができなくなります。

結論:

質問に答えるには:

はい、私たちの 2 つの主題には違いがあり、ほとんどの場合window.location、ブラウザーの履歴に戻ることはできますが、ブラウザーの履歴に戻ることwindow.location.replace()はできないため、ブラウザーの履歴から以前の URL レコードが削除されます。

おまけ:どちらが速い?

これを使用している場合:プロパティを直接window.location = "http://www.google.com/";更新している場合、関数の更新はプロパティを直接更新するよりも遅いためhref、使用するよりもパフォーマンスが高速です。window.location.replace("http://www.google.com/");

詳細についてwindow.location

window.locationLocation次のようなオブジェクトを返します。

console.log(window.location);

// This is how the Location object that returns from window.location looks like
{
    "ancestorOrigins": {},
    "href": "https://stackoverflow.com/",
    "origin": "https://stackoverflow.com",
    "protocol": "https:",
    "host": "stackoverflow.com",
    "hostname": "stackoverflow.com",
    "port": "",
    "pathname": "/",
    "search": "",
    "hash": ""
}

このLocationオブジェクトには、次のメソッド (関数) もあります。

Location.assign()
パラメーターで指定された URL でリソースを読み込みます。

Location.reload()
[更新] ボタンと同様に、現在の URL を再読み込みします。

Location.toString()
URL 全体を含む文字列を返します。これは Location.href の同義語ですが、値の変更には使用できません。

于 2022-01-28T00:45:52.007 に答える