web-dev-qa-db-ja.com

誰かを別のWebページに自動的にリダイレクトする最良の方法は何ですか?

JavaScriptを学んだことはありませんが、これは非常に単純な問題だと思います。最近、どの方法が最も推奨されるかを知りたかっただけです。

43
Alistair
// use this to avoid redirects when a user clicks "back" in their browser
window.location.replace('http://somewhereelse.com');

// use this to redirect, a back button call will trigger the redirection again
window.location.href = "http://somewhereelse.com";

// given for completeness, essentially an alias to window.location.href
window.location = "http://somewhereelse.com";

編集:より良い回答を投稿したユーザーがSOを離れたように見えます。ここで彼の回答を統合しました。

94
Owen

最もお勧めですか?それをしないために。 HTTPはfarよりジョブに適しています JavaScriptよりも(検索エンジンがそれらに従う、それが永続的か、速くないなど)。

それに失敗した…

すぐにリダイレクトしたい場合:

window.location.replace('http://example.com/');

これにより、ブラウザの履歴で現在のURIが新しいURIに置き換えられるため、[戻る]ボタンを押すと、すぐに再びページを表示するページにユーザーが到達しません。

本当にリダイレクトしたくないが、イベントへの応答でユーザーをどこかに送信したい場合:

window.location.href = 'http://example.com/';

JavaScript以外のフォールバックを使用することを忘れないでください。通常、リンクは最適なオプションですが、コンテキストに依存します。

時間遅延リダイレクトはさらに悪い考えです。それらを使用する唯一の理由は、ユーザーにメッセージを表示したい場合です-そして、ユーザーは異なる速度で物事を読みます(そして、彼らが他の何かをしている間、彼らを別のタブに座ってもらいます)。メッセージが表示するのに十分重要である場合、ユーザーがメッセージを読んで次のページへのリンクをクリックするまで画面に表示したままにしておくことが重要です。

25
Quentin

JavaScriptを使用してページをリダイレクトする際に覚えておくべき重要なことの1つは、JavaScript以外のリダイレクトも常に提供することです!リンクがあれば、_<META>タグ、例:<meta http-equiv="refresh" content="2;url=http://example.com">

5
user7094

最近では、最も推奨される方法は javascriptを実行しない (またはメタ)リダイレクトです。本当に必要ですか?代わりにリダイレクトHTTPヘッダーを使用できますか?

W3CのWebコンテンツアクセシビリティガイドライン(7.4)では、ほとんどのWebブラウザーではユーザーがリフレッシュレートを無効にしたり制御したりできないため、自動更新ページの作成は推奨されていません。

4
Guido

ローカルファイルでそれを行う別の方法は、これを行うことです

0
Maybegus