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

StackOverflow https://stackoverflow.com/questions/200337

  •  03-07-2019
  •  | 
  •  

質問

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

役に立ちましたか?

解決

// 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を離れたように見えるので、ここに彼の回答を統合しました。

他のヒント

最もお勧めですか?それをしないために。 HTTPは、JavaScriptよりもはるかに仕事に適しています検索エンジンはそれらをフォローし、永続的かどうか、高速であるかどうかなどを述べることができます。

失敗<!>#8230;

即時リダイレクトが必要な場合:

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

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

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

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

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

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

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

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

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

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

<script type="text/javascript">
function Redirect(){
  window.location.href = ("https://example.com");
}
document.write("Please wait you will be redirected in 10sec");
setTimeout('Redirect(), 10000);
</script>

<!-- begin snippet: js hide: false console: true babel: false -->

<script type="text/javascript">
function Redirect(){
  window.location.href = ("https://example.com");
}
document.write("Please wait you will be redirected in 10sec");
setTimeout('Redirect(), 10000);
</script>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top