Примечание: такие методы, как

Кто-нибудь знает о некоторых коротких / простых способах определения, отключен ли JavaScript? предупредить, что сайт не может работать должным образом, если в браузере не включен JS.

В конце концов, я бы хотел перенаправить их к контенту, который может работать в отсутствие JS, но мне нужно это обнаружение в качестве заполнителя для начала.

Я предполагаю, что вы пытаетесь решить, следует ли доставлять контент, улучшенный JavaScript. Лучшие реализации просто деградируют, поэтому сайт по-прежнему работает без JavaScript. Я также предполагаю, что вы имеете в виду обнаружение на стороне сервера, а не использование элемента <noscript> по необъяснимой причине.

omma. «

Я хотел бы добавить свой .02 здесь. Это не 100 % пуленепробиваемый, но я думаю, что это достаточно хорошо.

Проблема для меня в предпочтительном примере установки какого-то «Этот сайт не работает так хорошо без Javascript» — вам нужно убедиться, что ваш сайт работает нормально без Javascript. И как только вы начнете идти по этому пути, вы начнете понимать, что сайт должен быть пуленепробиваемым с JS отключен, и это большая часть дополнительной работы.

Итак, что вы действительно хотите, так это «перенаправление» на страницу с надписью «Включите JS, глупо». Но, конечно, вы не можете надежно выполнять мета-перенаправления. Итак, вот предложение:

<noscript>
    <style type="text/css">
        .pagecontainer {display:none;}
    </style>
    <div class="noscriptmsg">
    You don't have javascript enabled.  Good luck with that.
    </div>
</noscript>

… где все содержимого вашего сайта заключено в div с классом «pagecontainer». CSS внутри тега noscript будет скрывать все содержимое вашей страницы и вместо этого отображать любое сообщение «no JS», которое вы хотите показать. Это именно то, что Gmail, кажется, делает … и если это достаточно хорошо для Google, это достаточно хорошо для моего маленького сайта.

noscript выполняется, когда JavaScript отключен, и обычно используется для отображения контента, альтернативного тому, который вы создали в JavaScript, например,

<script type="javascript">
    ... construction of ajaxy-link,  setting of "js-enabled" cookie flag, etc..
</script>
<noscript>
    <a href="next_page.php?nojs=1">Next Page</a>
</noscript>

Пользователи без js получат ссылку next_page — вы можете добавить параметры здесь, чтобы на следующей странице вы знали, пришли ли они по ссылке JS / non-JS, или попытались установить cookie-файл через JS, отсутствие которого подразумевает, что JS отключен. Оба эти примера довольно тривиальны и открыты для манипуляций, но вы поняли идею.

Если вы хотите получить чисто статистическое представление о том, сколько ваших пользователей отключили JavaScript, вы может сделать что-то вроде:

<noscript>
    <img src="no_js.gif" alt="Javascript not enabled" />
</noscript>

, затем проверьте журналы доступа, чтобы увидеть, сколько раз было получено это изображение. Немного грубое решение, но оно даст вам хорошую идею в процентном отношении для вашей пользовательской базы.

Новые нотации в ECMAScript 2015

Если в вашем случае использования у вас есть форма (например, форма входа в систему) и ваш серверный скрипт должен знать, если у пользователя включен JavaScript, вы можете сделать что-то вроде этого:

<form onsubmit="this.js_enabled.value=1;return true;">
    <input type="hidden" name="js_enabled" value="0">
    <input type="submit" value="go">
</form>

Это изменит Значение js_enabled до 1 перед отправкой формы. Если ваш серверный скрипт получает 0, JS отсутствует. Если он получает 1, JS!

чтобы изменить максимальную длину меньших массивов.

 document.body.className = document.body.className.replace("no-js","js");

трюк, используемый в шаблоне HTML5 http://html5boilerplate.com/ через modernizr, но вы можете использовать одну строку javascript для замены классов

теги noscript — это нормально, но зачем иметь дополнительные вещи в вашем html, когда это можно сделать с помощью css

<noscript>, даже не требуется, не говоря уже о , не поддерживаемый в XHTML Глядя на вывод

рабочем примере :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
    <title>My website</title>
    <style>
      #site {
          display: none;
      }
    </style>
    <script src="http://code.jquery.com/jquery-latest.min.js "></script>
    <script>
      $(document).ready(function() {
          $("#noJS").hide();
          $("#site").show();
      });
    </script>
</head>
<body>
    <div id="noJS">Please enable JavaScript...</div>
    <div id="site">JavaScript dependent content here...</div>
</body>
</html>

. В этом примере, если JavaScript включен, вы видите сайт. Если нет, то вы увидите сообщение «Пожалуйста, включите JavaScript». Лучший способ проверить, включен ли JavaScript, — это просто попробовать и использовать JavaScript! Если он работает, он включен, если нет, то это не так …

Вы можете использовать простой фрагмент JS, чтобы установить значение скрытого поля. При публикации вы узнаете, был ли включен JS или нет.

Или вы можете попытаться открыть всплывающее окно, которое вы быстро закрываете (но оно может быть видно).

Также у вас есть тег NOSCRIPT, который вы можете использовать для отображения текста в браузерах с отключенным JS.

Тег noscript работает хорошо, но для продолжения обслуживания бесполезных файлов JS потребуется каждый дополнительный запрос страницы, поскольку по сути noscript — это проверка на стороне клиента.

Вы можете установить cookie с помощью JS, но, как заметил кто-то другой, это может не сработать. В идеале вы хотели бы иметь возможность обнаруживать сторону клиента JS, и без использования файлов cookie установить сторону сервера сеанса для этого пользователя, которая указывает, что JS включен.

На этот вопрос уже есть ответ:

Вы, вероятно, захотите включить эту проверку где-то ближе к концу вашей страницы, чтобы дополнительный HTTP-запрос не замедлял рендеринг вашей страницы.

Добавьте это в тег HEAD на каждой странице.

<noscript>
        <meta http-equiv="refresh" runat="server" id="mtaJSCheck" content="0;logon.aspx" />
</noscript>

позволяет объявлять переменные, которые ограничены по объему: блок, оператор или выражение, в котором он используется. Например:

<head>
    <noscript>
        <meta http-equiv="refresh" runat="server" id="mtaJSCheck" content="0;logon.aspx" />
    </noscript>
</head>

Результатов

Решение

<script type="text/javascript">
...some javascript script to insert data...
</script>
<noscript>
   <p>Access the <a href="http://someplace.com/data">data.</a></p>
</noscript>

Общий шаблон:

Вы также можете сделать его плагином для лучшего использования.

.pagecontainer {
  display: none;
}

JS:

function load() {
  document.getElementById('noscriptmsg').style.display = "none";
  document.getElementById('load').style.display = "block";
  /* rest of js*/
}

HTML:

<body onload="load();">

  <div class="pagecontainer" id="load">
    Page loading....
  </div>
  <div id="noscriptmsg">
    You don't have javascript enabled. Good luck with that.
  </div>

</body>

будет работать в любом случае, верно? Даже если тег noscript не поддерживается (требуется только некоторый CSS), кто-нибудь знает решение без CSS?

Надеюсь, что это кому-то поможет. {* } Поскольку я всегда хочу дать браузеру что-то стоящее, на что стоит обратить внимание, я часто использую этот трюк:

Во-первых, любая часть страницы, для правильной работы которой требуется JavaScript (в том числе пассивные элементы HTML, изменяемые с помощью вызовов getElementById и т. Д.), Предназначена для использования как есть с Предположение о том, что не доступен javaScript. (разработан так, как будто его там не было)

Любые элементы, для которых требуется JavaScript, я помещаю внутрь тега что-то вроде:

<span name="jsOnly" style="display: none;"></span>

Затем в начале моего документа я использую .onload или document.ready внутри цикла getElementsByName('jsOnly') для установки .style.display = ""; поворот JS-зависимые элементы снова включены. Таким образом, браузеры, не поддерживающие JS, никогда не должны видеть зависимые от JS части сайта, и, если они есть, они появляются сразу же, как только они готовы.

После того, как вы привыкли к этому методу, довольно легко гибридизировать ваш код для обработки обеих ситуаций, хотя я только сейчас экспериментирую с noscript и ожидайте, что он будет иметь некоторые дополнительные преимущества.

Распространенным решением является использование метатега в сочетании с noscript для обновления страницы и уведомления сервера при отключении JavaScript, например:

<!DOCTYPE html>
<html lang="en">
    <head>
        <noscript>
            <meta http-equiv="refresh" content="0; /?javascript=false">
        </noscript>
        <meta charset="UTF-8"/>
        <title></title>
    </head>
</html>

Вызов не будет выполнен в следующих случаях:

Сценарий на стороне сервера, такой как node.js или PHP, может затем проанализировать параметр и узнайте, что JavaScript отключен. Затем он может отправить клиенту специальную версию сайта, не поддерживающую JavaScript.

. Это «самое чистое» использование идентификатора решения:

<noscript>
    <style>
        body *{ /*hides all elements inside the body*/
            display: none;
        }
        h1{ /* even if this h1 is inside head tags it will be first hidden, so we have to display it again after all body elements are hidden*/
            display: block;
        }
    </style>
    <h1>JavaScript is not enabled, please check your browser settings.</h1>
</noscript>

Когда я не передаю никаких аргументов (как в вашем примере), я предпочитаю noscript менее полезен. Вместо этого я бы использовал скрытый ввод и использовал бы javascript для заполнения значения. После вашего следующего запроса или обратной передачи, если значение там, вы знаете, что JavaScript включен.

может завершиться ошибкой, когда он ссылается на переменные, которые должны быть частью замыкания, но на самом деле это не так.

Вы можете, например, использовать что-то вроде document.location = ‘java_page.html’, чтобы перенаправить браузер на новую страницу, загруженную сценариями. Неспособность перенаправить означает, что JavaScript недоступен, и в этом случае вы можете либо использовать CGI ro utines, либо вставить соответствующий код между тегами. (ПРИМЕЧАНИЕ. NOSCRIPT доступен только в Netscape Navigator 3.0 и более поздних версиях.)

, когда я играю / приостанавливаю видео на YouTube. Http://www.intranetjournal.com/faqs/jsfaq/how12.html

Техника, которую я использовал в прошлом, заключается в использовании JavaScript, чтобы написать сессионный cookie, который просто действует как флаг, чтобы сказать, что JavaScript включен. Затем серверный код ищет этот файл cookie и, если он не найден, предпринимает соответствующие действия. Конечно, эта техника полагается на то, что куки включены!

Я думаю, вы можете вставить тег изображения в тег noscript и посмотреть статистику, сколько раз ваш сайт и как часто это изображение загружалось.

Люди уже опубликовали примеры, которые являются хорошими вариантами для обнаружения, но основаны на вашем требовании «предупредить, что сайт не может работать должным образом, если в браузере не включен JS». Вы в основном добавляете элемент, который каким-то образом появляется на странице, например, всплывающие окна в переполнении стека, когда вы получаете значок, с соответствующим сообщением, а затем удаляете его с помощью некоторого Javascript, который запускается сразу после загрузки страницы ( и я имею в виду DOM, а не всю страницу).

, вы можете отчетливо видно, что тайм-аут будет отставать, в то время как интервал почти все время составляет почти 1 вызов / секунду (что пытается сделать скрипт). Если вы измените переменную скорости вверху на что-то маленькое, например 20 (то есть будет пытаться запускаться 50 раз в секунду), интервал никогда не достигнет в среднем 50 итераций в секунду. gif или похожие). Таким образом, вы можете просто учитывать разницу между уникальными запросами страниц и запросами вашего файла отслеживания.

, но работает только для целых чисел:
Недостатком является то, что когда пользователь впервые заходит на ваш сайт, закладку, URL, URL, созданный поисковой системой, вам нужно будет определить, что это новый пользователь, поэтому не ищите NVP, добавленный в URL, и сервер должен будет ждать следующего клика, чтобы определить, включен ли пользователь JS. Кроме того, еще одним недостатком является то, что URL будет в конечном итоге на URL браузера, и если этот пользователь затем добавит в закладки этот URL, он будет иметь js = true NVP, даже если у пользователя не включена JS, хотя при следующем щелчке сервер будет желательно знать, был ли у пользователя включен JS или нет. Вздох … это весело …

Чтобы заставить пользователей включать JavaScripts, я устанавливаю атрибут ‘href’ каждой ссылки на один и тот же документ, который уведомляет пользователя о необходимости включения JavaScripts или загрузки Firefox (если они не знают, как включить JavaScripts) , Я сохранил фактический URL-адрес ссылки на атрибут «name» ссылок и определил глобальное событие onclick, которое считывает атрибут «name» и перенаправляет страницу туда.

Это хорошо работает для моей пользовательской базы, хотя и немного фашистской ;).

в идеале noscript, что вам следует избегать, так как оно не работает должным образом и не нужно.

Например, просто создайте свой сайт для скажем <div id="nojs">This website doesn't work without JS</div>

без обмана со стороны document.getElementById('nojs').style.display = 'none'; и занимаюсь обычным делом JS.

. Теперь вы можете получить значение с помощью DOM, используя innerHTML span id, в этом случае вам не нужно делать какие-либо вызовы. на сервер, или AJAX или любую другую вещь. говорится, что затем проверьте наличие javascript, удалив cookie-файл с помощью Jquery.Cookie, а затем проверьте cookie-файл таким образом, проверив наличие как cookie-файлов, так и javascript.

и

// Jquery
$('body').addClass('js-enabled');

/* CSS */
.menu-mobile {display:none;}
body.js-enabled .menu-mobile {display:block;}

Я использую это в своем проекте. Я использую знак для обработки строки как числа (в переменной with_interesst)

Я нашел другой подход с использованием css и javascript.
ниже:

Мне помогло следующее:
some
2. Используйте свойство content для создания текста после элемента BODY. (Вы можете стилизовать это как хотите).
3 Создать Второе правило css ID и назовите его # jsEn, и стилизуйте его. (Ради простоты я дал своему правилу # jsEn другой цвет фона.

<style>
#jsDis:after {
    content:"Javascript is Disable. Please turn it ON!";
    font:bold 11px Verdana;
    color:#FF0000;
}

#jsEn {
    background-color:#dedede;
}

#jsEn:after {
    content:"Javascript is Enable. Well Done!";
    font:bold 11px Verdana;
    color:#333333;
}
</style>

Фрагмент JavaScript:
1. Создать функцию.
2. Захватите идентификатор тела с помощью getElementById и назначьте его переменной.
3. Используя функцию JS ‘setAttribute’, измените значение атрибута ID элемента BODY.

<script>
function jsOn() {
    var chgID = document.getElementById('jsDis');
    chgID.setAttribute('id', 'jsEn');
}
</script>

HTML часть.
Примите асинхронную природу JavaScript!
2. Добавьте событие onLoad с именем функции. (JSon ()).

<body id="jsDis" onLoad="jsOn()">

Поскольку тегу BODY был присвоен идентификатор # jsDis:
— Если Javascript включен, он сам изменит атрибут тега BODY.
— Если Javascript отключен, будет показан текст правила css ‘content:’.

Вы можете поэкспериментировать с контейнером-оберткой # или с любым DIV, использующим JS.

Надеюсь, что это поможет понять идею.

Добавление обновления в meta внутри noscript не очень хорошая идея.

  1. Поскольку тег noscript не совместим с XHTML

  2. Здесь вы можете получить вот такие документы: http://www.w3schools.com/TAGS/att_meta_http_equiv.asp Глядя на вывод

Для тех, кто просто хочет отслеживать, был ли включен js, как насчет использования подпрограммы ajax для сохранения состояния? Например, я регистрирую всех посетителей / посещений в наборе таблиц. Поле JSenabled может быть установлено по умолчанию в FALSE, а подпрограмма ajax установит для него значение ИСТИНА, если JS включен.