2009-04-13 20 views
9

私はRailsビルトインヘルパー関数を使用してサイトにajax機能を追加するWebアプリケーションを作成しています。私は、ユーザーがJSを使わずに正しく機能しないアプリを使用できるようにしたくありません。Ruby on Rails、Javascriptの検出

これを防ぐ必要があります。ユーザーがJSなしでページを読み込まないようにするにはどうすればよいですか?

レイアウトでタグを使用しようとしました。これはJSの不在を検出しますが、ビューをレンダリングします。 yieldの周りにscriptタグを置くと、ビューがレンダリングされなくなります。

これを行う方法に関するアイデアはありますか?

答えて

21

head要素には、ブロック内にメタリフレッシュタグを使用して、noscriptブロックを含めることができます。

<head> 
    <!-- title, scripts, css etc go here --> 
    <noscript> 
     <meta http-equiv="refresh" content="2;url=http://yoursite.com/nojswarning.html"> 
    </noscript> 
</head> 

あなたが希望

hereメタリフレッシュの詳細を読むことができ、これは

EDITができます::例は明確にするために、noscriptタグにはJavaScriptがユーザーのためにオフになっている場合にのみ実行されます。この場合、JSがオフの場合、ユーザーはhttp://yoursite.com/nojswarning.htmlにリダイレクトされます。もちろんこれを任意のサイトの任意のページに変更することができます。

+0

ありがとう、素晴らしい投稿、完璧に働いた。 –

2

単純な答えは、アプリケーション全体をJS経由で読み込むことです。そうすれば、JSを有効にしている人にはアプリケーションは決して公開されません。

代わりに、JSチェックページに読み込まれるiframeでページを開始することもできます。すべてのページがJSを介してアプリの実際のURLにリダイレクトされます。したがって、ユーザーがJSを持っていない場合、リダイレクトされません(また、< noscript>タグでJSが必要であることを通知できます)。 (iframeを使用して、JS以外のユーザーにアプリケーションに簡単にアクセスするURLを与えないようにします)

0

<noscript></noscript>と思われます。私はオーバーレイを持つデフォルトの小さなローダーを作成し、クライアントがjavascriptをサポートしていない場合、javascriptはローダーを隠すことはありません。また、<noscript>タグのコンテンツはオーバーレイとともに表示されます。

関連する問題