[Решено] Как проверить, включен ли у пользователя JavaScript

Главные вкладки

Аватар пользователя Anton L. Safin Anton L. Safin 2 июля 2009 в 6:01

К вопросу о том, как проверить, включен ли у пользователя JavaScript и, если он отключен, выдать соответствующее сообщение. Готовый код:

<div id="noscript" class="error">
  Пожалуйста, включите JavaScript!
  <a href="http://www.google.ru/support/bin/answer.py?answer=23852">Как?</a>
</div>
<script>
  $('#noscript').hide();
</script>

Этот код можно вставить в ваш темплэйт (page.tpl.php). Только что проверил с включенным/отключенным js - все работает.

Комментарии

Аватар пользователя orb orb 2 июля 2009 в 11:13

а зачем?
Сейчас без Джава скриптов не работает много сайтов
И если человек умышленно их отключает значит он уже знает последствия и разбирается в вопросе

Аватар пользователя volocuga volocuga 2 июля 2009 в 11:28

Как раз искал подобное,спасибо.Но как это работает?Это полный код?

orb:Это правило хорошего тона.Ситуация:зашёл офисный сотрудник в магазин купить чего-нибудь,а ему злой админ повыключал яву.Ситуация теоретическая,но маньяки-админы-это реальность

Аватар пользователя Anton L. Safin Anton L. Safin 2 июля 2009 в 12:41

"volocuga" wrote:
Это полный код?

Да, это полный код. Если js включен, DIV с ошибкой будет отображаться, в противном случае он будет скрыт.

Аватар пользователя Anton L. Safin Anton L. Safin 2 июля 2009 в 12:42

"axel" wrote:
Стоит упомянуть, что в коде используется JQuery.

Если бы я писал это где-то в другом месте, не на drupal.ru, обязательно бы упомянул.
Покажите мне хоть один сайт на drupal без jQuery Wink

Аватар пользователя axel axel 3 июля 2009 в 1:27

Anton L. Safin wrote:
Если бы я писал это где-то в другом месте, не на drupal.ru, обязательно бы упомянул.
Покажите мне хоть один сайт на drupal без jQuery ;)
Согласен. Просто нас могут читать женщины и дети посетители зашедшие с поисковиков в поиска ответа на вопрос топика, потому как вопрос не только друпальский. Ну в общем да, в конце-концов у нас тут вроде как о друпале сайт Smile

Аватар пользователя Anton L. Safin Anton L. Safin 2 июля 2009 в 12:52

"perloid" wrote:
зачем? если для этого есть тег специальный

Для поставленной задачи - да, можно использовать тэг noscript. Просто в моем варианте возможно более "продвинутое" использование.

Есть, допустим, форма добавления товара в корзину. При нажатии кнопки в форме выполняется jscript, который выполняет AJAX-запрос, ну и т.д. Хорошо бы на случай, если у человека выключен JavaScript, подстраховаться и сделать еще одну кнопку, работающую без AJAX'а. Две кнопки - это некрасиво Smile Поэтому используем такой вариант:

<form>
...
<input type="button" class="js" style="display:none" value="Кнопка, работающая с JS"
 onClick="javascript:addtocart()">
<input type="submit" class="noscript" value="Кнопка, работающая без JS">
</form>

<script>
  $('.noscript').hide();
  $('.js').show();
</script>

Аватар пользователя kost kost 11 сентября 2009 в 16:00

Quote:
Хорошо бы на случай, если у человека выключен JavaScript, подстраховаться и сделать еще одну кнопку, работающую без AJAX'а. Две кнопки - это некрасиво

Бред. Надо делать одну кнопку, которая с JS отправляет AJAX'ом форму, без JS -- обычным способом.

Аватар пользователя volocuga volocuga 2 июля 2009 в 14:00

А,всё понял,просто до безобразия.Див с мессажем удерживается jquery в невидимом состоянии,если ява выключены,стало быть и удерживать нечему.
Небольшой тюнинг,многоязычность+сео

<noindex><div id="noscript" class="error">
<?php print t('Please enable java-script!'); ?>
  <a href="http://www.google.ru/support/bin/answer.py?answer=23852" target="_blank" rel="nofollow"><?php print t('How?'); ?></a>
</div></noindex>
<script>
  $('#noscript').hide();
</script>
Аватар пользователя Geldora Geldora 2 июля 2009 в 15:51

Спасибо!

К вопросу о "зачем" - есть модуль слайдер dynamic display block, так вот он при выключенном жаваскрипте выводит пустой черный блок. Т.к. ДДБ обычно помещают в самое лучшее место страницы, то этот код поможет "подстраховаться", если у пользователя нет жаваскрипта.

П.С. (Решено) в тему поставьте!

Аватар пользователя alextdk alextdk 7 июля 2009 в 1:58

"Anton L. Safin" wrote:

<form> ... <input type="button" class="js" style="display:none" value="Кнопка, работающая с JS" onClick="javascript:addtocart()"> <input type="submit" class="noscript" value="Кнопка, работающая
без JS">
</form>   <script> $('.noscript').hide(); $('.js').show(); </script>

Мде .... просто но коментс ... индуский код.

Такие вещи делаются так

<a href="/cart/add/123" onclick="javascript:addToCart(123); return false;" target="_blank">...</a>
Аватар пользователя Anton L. Safin Anton L. Safin 7 июля 2009 в 6:12

"lamer" wrote:
Мде .... просто но коментс ... индуский код.

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

В данном конкретном случае - согласен, я бы сделал так же (через return false).

Аватар пользователя volocuga volocuga 21 октября 2009 в 22:49

Кстати,первый код хоть и прост,но кака-этот текст индексируется гуглём и идёт в выдачу как уникальный Smile