2

ブラウザのJavaScriptがオフになっているかどうかを確認してから、本文の代わりにエラーdivを表示する必要があります。どうすればよいですか?

4

4 に答える 4

7

逆に行う必要があります-いわば-すべてを出力してから、Javascriptを使用してエラーdivを非表示/削除する必要があります。

これはプログレッシブエンハンスメントと呼ばれます。

于 2011-02-28T09:52:33.300 に答える
6
<html class="no-js">
    <head>
    <style>        
        .error,
        .no-js #container {
            display: none;
        }

        .no-js .error {
            display: block;
        }
    </style>

    <script>
        document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, '');
    </script>

    </head>
    <body>
        <div id="container">
            rest of page
        </div>
        <div class="error">
            sorry, no javascripty, no sitey!
        </div>
    </body>
</html>

もちろん、これは通常悪い考えですが、あなたがすでにそれを考慮していることを願っています。

于 2011-02-28T09:53:18.900 に答える
4

本体に追加できます:

<noscript>
      Here the html to display when javascript is off
</noscript>
于 2011-02-28T09:53:12.613 に答える
1

@roryf の解決策は良いアプローチですが、jQuery に依存しています。domloaded イベントの発生が少し遅れると、no-js コンテンツの「フラッシュ」を取得できます。

html.no-js以下は、ボディがレンダリングされる前にクラスを削除します。

<!DOCTYPE html>
<html class="no-js">
<head>
<script>

if (document.documentElement) {
    var cn = document.documentElement.className;
    document.documentElement.className = cn.replace(/no-js/,'');
}

</script>
</head> 
于 2011-02-28T10:18:35.910 に答える