Что делать если JavaScript отключен
В наше время разработчики сайтов очень часто используют javascript для создания различных эффектов. Я тоже не исключение. Ведь с помощью javascript можно реализовать удобное меню, правильно организовать вывод и работу с контентом на экране, а также реализовать огромное множество всяких полезняшек и красивостей.
Конечно вебмастеру в таком случае предстоит ответить на вопрос «А что увидит посетитель, если у него по каким-то причинам не работает javascript?». На этот счёт есть два основных мнения. Первое — пользователь сам виноват в том, что отключает возможности своего браузера и, соответственно, работа сайта при таком раскладе полностью проблема юзера. Второе мнение — пользователь должен «пострадать» минимально. Основной функционал должен быть работоспособным в любом случае, независимо от javascript.
Если с приверженцами первого мнения всё понятно (они пишут сайты, не обращая внимания на процент сёрферов с отключённым javascript — которые зайдут на страницу и не смогут перемещаться по сайту либо ощутят другой явный дискомфорт), то вторые всячески стараются реализовать функции для обоих вариантов (с включённым и выключенным javascript).
Это «лишний» код — могут возразить радикальные вебмастера, приверженцы плевания на своих пользователей. Да, но ведь удобство пользователя превыше всего. Сайт то мы делаем не для себя, а для посетителя. Поэтому просто обязаны удовлетворить всех (ну, или почти всех).
Веб разработчик обязан сделать так, чтобы посетитель увидел и смог воспользоваться сайтом независимо от своего браузера, каких-то предпочтений (не самых извращённых конечно) и отсутствия технического образования.
Это касается отключённого javascript, устаревшего браузера Internet Explorer 6 и вопросов юзабилити (интуитивно понятный интерфейс и всё такое). Сегодня мы говорим о js и сейчас я приведу несколько вариантов решения данного вопроса:
Выдача разного содержимого в зависимости от того, включен ли JavaScript
С помощью PHP
Например, можно при первой загрузке страницы (если в куках ничего нет) загружать пустую страницу, на которой ставить жаваскриптом куку и редиректить уже на нормальную страницу (php проверяет куку и выдаёт нужный контент). При последующих загрузках страницы, просто проверяем куку.
Или же сделать тоже самое, но независимо от кук. Они ведь тоже могут быть выключены. Сделать это можно с помощью простых запросов.
document.write('<img src="isscript.php?script=1" width="1" height="1">');
</script>
<noscript>
<img src="isscript.php?script=0" width="1" height="1">
</noscript>
Это изрядное извращение, поэтому наглядных примеров не будет.
С помощью HTML и JavaScript
На странице устанавливается javascript редирект на страницу для посетителей с включённым js. Если же он выключен, то сёрфер останется на той же странице.
location.replace("page-with-java-script.html");
</script>
Обратно его отправит другой редирект (уже обычный мета тег HTML), если вдруг пользователь отключит JS.
То есть, даже если сёрфер будет заниматься хернёй включать и выключать скрипты в браузере, он попадёт на нужную страницу. Вот и примерчик имеется.
Использование тега <noscript>
В предыдущем примере noscript использовался для редиректа на специальную страницу для пользоваталей без JS.
Также с помощью носкрипта можно уведомить пользователя, что JavaScript отключён и функциональность сайта ограничена.
Изначально правильное проектирование с учётом возможности отключения javascript
Самый правильный вариант. Для примера возьмём обычную ссылку:
Видите, по этой ссылке пользователь в любом случае перейдёт по адресу http://neverlex.com. Если включен жаваскрипт, то сработает команда, заданная через onclick, а если отключён — то ссылка сработает, как обычный линк.
Зачем это нужно? Например, в интернет-магазине предусмотрено красивое добавление товара в корзину с помощью AJAX. Произойдёт одно из двух: либо добавление товара без перезагрузки страницы, либо с перезагрузкой. Но не в коем случае, покупатель не должен остаться без этого действия вообще. Клиент ведь всегда прав.
Что-то вроде вывода: Следует использовать javascript правильно. Так, чтобы пользователь мог воспользоваться основными функциями даже при отключённых скриптах. Также сёрфера желательно уведомить о том, что для полной функциональности администрация рекомендует включить JavaScript.
Каюсь. Сам раньше делал менюшки, особо не задумываясь о последствиях для сёрфера с отключёнными скриптами, однако теперь плотно изучив данный вопрос, решил для себя, что не буду больше позволять себе подобной глупости.
В конце приведу пример, почему стоит заботиться о ВСЕХ пользователях.
Вариантов очень много. Пользователь может не разбираться в компьютерах и «наклацать чото в браузере». Например, директор жирной конторы, который не умеет пользоваться компьютером, ищет себе поставщика какой-то услуги в Интернете (например, нужно сделать сайт), не собирается жалеть на этот заказ «много денег», но по каким-то причинам жаваскрипт у него выключен (зловредный сисадмин пошалил?). Он находит ваш сайт, но не может посмотреть портфолио или контакты из-за того, что менюха на вашем «сайте» работает только с помощью жаваскрипта. Он уйдёт и заплатит «много денег» другому специалисту, а вы останетесь в пролёте. Всё правильно, он сам виноват, но кто пострадал в результате?
Продолжаю обмен постовыми.
KtoNaNovenkogo.ru улучшает индексацию: Улучшаем индексацию сайта поисковиками — оптимальный файл robots.txt для Joomla, SMF, WordPress — Часть 2.
Ян Такушевич написал пост для любителей WP: Всё о миниатюрах в wordpress.
Поделиться ссылкой:
Комментарии:
При переходе на любую запись твоего блога из google reader открывается страница с ошибкой 404.
Если выключен JavaScript, эксплоитом включить его и не париться ))))))))))))
«стоит заботиться о ВСЕХ пользователях» - совершенно правильный вывод.
Я javascript отключила после того, как словила вирус, который пришлось лечить с применением спец.средств. Теперь я их включаю для уже «проверенных» сайтов.
Поэтому в Вашем примере я бы не называла сисадмина зловредным, а его действия - шалостью, т.к. именно такой «директор жирной конторы, который не умеет пользоваться компьютером» с наибольшей вероятностью и натащит вирусов с каких-попало сайтов :)
P.S.Не знаю, что именно Вы понимаете под идиотскими высказываниями, но надеюсь, что моё высказывание таковым (с Вашей точки зрения) не окажется )))
Интересно, а какой процент пользователей пользуется браузерами без поддержки javascript?
Сейчас посмотрел статистику в метрике по паре сайтов (один из них интернет-магазин) - нашёл целых 3 посетителя за год!
Сам я тоже за максимальную доступность и удобство, но стоит ли игра свеч?
Такая мысль:
Посетитель может кликнуть на кнопку ДО ЗАГРУЗКИ скрипта, даже если JavaScript у него включён. (или, например, загрузка скрипта может оборваться)
Короче - важные управляющие элементы в любом случае должны работать и без JS, иначе - возможны значительные неудобства и ошибки.
Подскажите код, который бы извещал посетителя о том, что у его браузера откл. яваскрипт?
Например чтобы вверху всплывала полоска с текстом.
Неправда ваша. Всё работает и в 11-й опере. Вот пример: supercena точка info. редирект по <noscript> с задержкой в 1сек. На странице редиректа (.../noscript.html) проверка, не включен ли уже js :) и, если включен, javascript-редирект обратно, на исходную. Если выключен, клиент видит пояснение, как включить js у себя в браузере. Ну и на всякий случай :) , пояснение, как определить, какой вообще у человека интернет-браузер.
Всегду думал, что <noindex> — это такая не самая умная выдумка Яндекса для маскировки неидексируемых ссылок, а отключенный JavaScript можно было побороть тегом <noscript> ;)