JavaScriptでwindow.navigateまたはdocument.locationを使用する必要がありますか?


177

JavaScriptを使用して現在のWebページの場所を変更するために使用する推奨方法は何ですか?window.navigateとdocument.locationの両方が使用されているのを見てきました。行動に違いはありますか?ブラウザの実装に違いはありますか?

回答:


220
window.location.href = 'URL';

現在のウィンドウの位置を変更するための標準実装です。


22
window.location.hrefが標準実装であることを示す参照がありますか?そして、その標準はすべてのブラウザに等しく適用されますか?あなたは確かに知識が豊富で、15票以上(回答は承認済み)の方が信頼性が高くなりますが、主張を裏付けるには、ブラウザ開発チームのドキュメントを見るほうがよいと思います。
Goyuix

6
@Goyuix、それwindow.location.hrefが完全な実装であると言う方がおそらくより正確ですが window.location、同じことを達成します。docs.sun.com/source/816-6408-10/location.htmを参照してください:「locationオブジェクトのプロパティに文字列を割り当てると、JavaScriptはlocationオブジェクトを作成し、その文字列をそのhrefプロパティに割り当てます。」
James Skidmore、2010

3
これらの人たちはそれが個人的な好みだと判断したようです:developer.mozilla.org/Talk :en/DOM/window.location 。または、下部近くの例を参照してください。これらは使用するwindow.locationだけですが、必ずしもどちらの方法も示していません:developer.mozilla.org/en/window.location
James Skidmore

1
私は現在、これをAndroid開発に使用しています。AndroidのデフォルトブラウザーでJSからページをリダイレクトするのに問題があります。新しいページをリロードするために設計された方法window.location.href = 'URL';も試しましたwindow.location.assign('URL');。詳しい情報は見つけることができますw3schools.com/jsref/obj_location.asp
フィリップ

3
window.navigateはInternet Explorerで使用される独自の方法です(互換性のために他のブラウザが模倣するかどうかは確かですが、Chromeは模倣しません)。document.locationまたはwindow.location標準オブジェクトです(さまざまなHTML / HTML5 / DOM仕様を参照)。document.location = someURL(またはwindow.location = someURL)はおそらくレガシーコードのためにサポートされています。それを行う正しい方法はdocument.location.href = someURL、またはおそらくdocument.location.assign(someURL)です。
PhistucK 2013年

11

一部のブラウザではwindow.navigateがサポートされていません

javaスクリプトにはリダイレクトのための多くの方法があります。以下のコードと説明を参照してください

window.location.href = "http://krishna.developerstips.com/";
window.location = "http://developerstips.com/";
window.location.replace("http://developerstips.com/");
window.location.assign("http://work.developerstips.com/");

window.location.hrefはブラウザのキャッシュからページをロードし、常にサーバーにリクエストを送信するわけではありません。そのため、古いバージョンのページがキャッシュにある場合は、サーバーから新しいページをロードするのではなく、そこにリダイレクトされます。

ユーザーが戻るボタンを使用して元のドキュメントに戻ることができるようにする場合は、リダイレクトのwindow.location.assign()メソッド。

新しいページにリダイレクトし、ユーザーが戻るボタンを使用して元のページに移動できないようにする場合は、window.location.replace()メソッド。


7

document.locatio nは(非推奨ですがまだ存在します)読み取り専用の文字列プロパティで、document.urlに置き換えられました。


6

window.location フレームにも影響します

私が見つけた最高の形は:

parent.window.location.href

そして悪いのは:

parent.document.URL 

私は大規模なブラウザーテストを行い、いくつかのプラグインを備えたいくつかのまれなIEが2番目のフォームで未定義になります。


そのロジックにより、top.window.location.hrefの方が優れているでしょうか?
Orwellophile

6

window.locationブラウザのターゲットに影響します。document.locationは、ブラウザとフレーム/ iframeにのみ影響します。


4

window.navigate一部のブラウザではサポートされていないため、回避する必要があります。locationプロパティを使用する他の方法は、最も信頼性が高く、一貫性のあるアプローチです


2

私は一緒に行きwindow.location = "http://...";ます。私は数年間クロスブラウザーJavaScriptをコーディングしており、このアプローチを使用して問題を経験したことはありません。

window.navigateそしてwindow.location.href私には少し奇妙に思えます。


13
window.locationは機能しますが、「location」はオブジェクトであるため、技術的には正しくありません。
James Skidmore、

16
しかし、JavaScript内のすべてがオブジェクトです:)
cllpse

1
ほとんどすべてがJavaScriptのオブジェクトですが、オブジェクトに文字列を割り当てても、通常は値がそのプロパティの1つに設定されません(window.locationまたはdocument.locationがhrefプロパティを使用するため)代わりに、そのオブジェクトをストリング。この場合、既存の(風変わりな)実装およびレガシー(それほどレガシーではない)コンテンツと互換性を持たせるために、ブラウザーの癖が追加されました。
PhistucK 2014年

1

実際には違いはありません。それを行うには約5つの異なる方法があります。ただし、私が最もよく目にするのはdocument.locationwindow.location主要なすべてのブラウザでサポートされているためです。(私は個人的window.navigateにプロダクションコードで使用されるのを見たことがないので、多分それは非常に良いサポートを持っていませんか?)


document.locationはすべてのブラウザーで機能するわけではありません。window.locationが行います。
フィリップレイバート09年

2
Firefoxはwindow.navigateをサポートしていません
Andrew Harry、


-5

を使用してページを移動できます

window.location.href =Url;

3
これは実際には、受け入れられた情報よりも多くの情報を追加するものではなく、複数の賛成投票された回答...
Stuart Siegler

3
さらに進んで、受け入れられた回答を盗用したと主張することもできます
Liam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.