Как определить, отключен ли JavaScript в браузере, и отобразить уведомление - PullRequest
2 голосов
/ 28 февраля 2011

Мне нужно проверить, не отключен ли JavaScript в браузере, а затем показать тело ошибки вместо тела, как я могу это сделать?

Ответы [ 4 ]

7 голосов
/ 28 февраля 2011

Вам нужно будет сделать это наоборот - так сказать, - вам придется вывести все, а затем скрыть / удалить ошибку div, используя Javascript.

Это называется прогрессивным улучшением.

6 голосов
/ 28 февраля 2011
<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>

Конечно, обычно это плохая идея, но я надеюсь, что вы уже это учли.

4 голосов
/ 28 февраля 2011

в теле можно добавить:

<noscript>
      Here the html to display when javascript is off
</noscript>
1 голос
/ 28 февраля 2011

@ roryf - хороший подход, хотя он зависит от jQuery, и если загруженное событие запускается с небольшим опозданием, вы можете получить «flash» содержимого 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> 
...