web-dev-qa-db-ja.com

javaScriptが無効になっている場合にリダイレクトするにはどうすればよいですか?

私は、javaScriptに大きく依存しているサイトを持っています。すべてのJSと、JSを削除する必要があるすべての要素を含むミラーサイトを作成しました。ユーザーがjavaScriptを有効にしていない場合に、ユーザーをミラーサイトにリダイレクトするための優れた簡単な方法は何ですか?

私はこれを試しましたが、あまり良くないようです:

<noscript>
  <meta http-equiv="refresh" content="0; URL=nojs/index.php">
</noscript>

また、noscriptタグにheader-redirectを入れようとしましたが、うまくいきませんでした。

30
zeckdude

JavaScriptを使用しないバージョンのサイトをデフォルトにします。そこに小さなスクリプトを含めて、スクリプトサイトにリダイレクトします。

または、リダイレクトの使用を完全に中止し、 Progressive Enhancement を使用します

22
Matt
<noscript>
    <p>This site is best viewed with Javascript. If you are unable to turn on Javascript, please use this <a href="http://sitewithoutjavascript.com">site</a>.</p>
</noscript>

一部の人々は意図的にJavaScriptを無効にしており、リダイレクトする前にJavascriptをオンにする機会を与えたいと思うかもしれません。

78
Tyler Carter

私が思いついたこのコードを使用してください:

<noscript>
  <style>html{display:none;}</style>
  <meta http-equiv="refresh" content="0.0;url=nojs/index.php">
</noscript>

スタイルを使用してページの内容をブロックしているため、リダイレクトする前に何も気付かれません。 IEのような一部のブラウザではブロックされる可能性があるため、メタ更新よりも優れたものが欲しいというのが私を困らせる唯一のことです。 PHPヘッダーはnoscriptタグに入れることができないため、実際にはソリューションではありません。無視してすぐに書き出すからです。

48
Ben Gollow

「あまり良くない」とはどういう意味ですか?

私のすべてのサイトが使用します:

<noscript>
  <meta http-equiv="refresh" content="0; url=http://www.sadtrombone.com/" />
</noscript>
16
Amy B

クライアント側のリダイレクトは、ユーザーにとって煩わしいと思われる可能性があるため、行いません。代わりに、<noscript>を使用して、このJSのないサイトのコンテンツを同じページに表示します。より多くの作業になる可能性がありますが、それは間違いなくスムーズな体験になるでしょう。

6
Sasha

IEでメタリフレッシュを無効にできるため、ユーザーをリダイレクトする必要があるよりも優れたソリューションを思いつきました。

これをHEADに入れます:

<style>div#body{display:none;}</style>

これをBODYに入れます:

<noscript>NO JAVASCRIPT CONTENT HERE</noscript>

<noscript><div id="body"></noscript>JAVASCRIPT CONTENT HERE<noscript></div></noscript>

そうすれば、タグは本来あるべき場所にあります。

2
Ben Gollow