2011-08-13 4 views
8

<noscript>で囲まれたメタリフレッシュをFacebookが持っているのに気付いたのは、<head>タグで囲まれています。彼らはユーザーエージェントがjavascriptを有効にしているかどうかを検出するためにこれを使います。<noscript>を<head>以内に使用:良いアイデアか悪いアイデアですか?

我々は2つの理由のために、この方法を使用して考えた:Autoに

  1. は、Facebookがそうであるよう、サイトの非jsの最適化されたバージョンにリダイレクトします。
  2. javascriptだけでなく、CSS3の苦情ブラウザで指のポインタを無効にするための非jsスタイルシートを含めるには、これらのボタンをフェードアウトして無効にする(むしろ動作しないようにする)。

この方法を上記の理由で使用すると、大部分のユーザーエージェントに影響する悪影響が発生しますか?第二のために

+0

私もこれを気付き、プロダクションサイトでそれを使用してユーザーを非JSページに送り、ブラウザを更新したり、JSを有効にしたりできるようにしましたが、私は間違いなく代替と落とし穴を知りたいと思いますこのアプローチの質問をアップアップする – Kumar

+0

有効なhtmlを使用することをお勧めします。例えば、PHPのHEADにNOSCRIPTタグを持つHTMLの解析に問題がありました。 – ZiTAL

答えて

6

いいえ、頭の中で<noscript>タグを使用して、任意の贅沢な副作用があってはなりません。言っ

は、 <noscript>にいくつかの欠点があります。

  • ブラウザはJavaScriptをサポートしていない場合にのみ動作しますか、それが無効になっている場合。 <noscript>タグのコンテンツは、Javascriptがファイアウォールによってブロックされている場合は表示されません。
  • 非常に貧弱なJavascriptサポートを使用するユーザーエージェントは、<noscript>のコンテンツを無視します。
  • ほとんどのブラウザは<noscript>を頭でサポートしていますが、技術的に無効なX(HTML)なので、ページが検証されない可能性があります。

IMO、あなたがしたいことは、非常に良いことであり、タグの適切な使用です。しかし、さらに良い解決策は、JavaScriptを無効にする代わりに<noscript>を使用するのではなく、Javascriptの機能を有効にするためにJavascript内で機能の検出を使用することです。

HTML5の機能に応じている場合は、この目的でModernizrライブラリをお勧めします。

3

、私はその後、JavaScriptで、すぐにそのクラスを除去し、jsのクラス(またはModernizrそのようなライブラリーを含めて、それを置き換える、最初にあなたの<html>要素にno-jsのクラスを与えるのアプローチを使用してお勧めしますこれは自動的に行います)。こうすることで、有効なJavaScript状況と無効なJavaScript状況の両方にCSSスタイルを設定するには、これらのスタイルに.jsまたは.no-jsという接頭辞を付けることで対応できます。

例えば、このような何か、:

.js span.javascriptOnlyAnchor { cursor: pointer; text-decoration: underline; } 

.no-js span.javascriptOnlyAnchor { display: none; } 
ここでその詳細

ポール・アイリッシュ会談:http://paulirish.com/2009/avoiding-the-fouc-v3/

+0

出力バッファのどの時点で実際にjsを実行することをお勧めしますか?頭の中で?体の直後? htmlがre-class htmlに実行されるときにhtmlが(理想的には)まだ開かれているという事実には何の問題もありません。私はライブラリをインストールするつもりはありませんが、これをカスタムコーディングすることになります。 –

+0

これは、頭にJavaScriptの小さなビットが良いアイデアであるときは数回のうちの1つです。さもなければ、あなたはまだスタイルのない(またはこの場合はスタイルが違う)コンテンツのフラッシュに脆弱です。 –

関連する問題