Сейчас осень 2008 года, и я все еще слышу, как разработчики говорят, что вам не следует создавать сайт, требующий JavaScript.
Я понимаю, что вам следует разрабатывать сайты, которые постепенно деградируют, когда JS отсутствует / включен. Но в какой момент вы не включаете функциональность, которая может быть реализована только на JS?
Думаю, вопрос сводится к демографии. Есть ли цифры того, сколько людей просматривают без JS?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Связанный вопрос был задан в нашем собственном блоге Stack Overflow: https://blog.stackoverflow.com/2008/06/is-it-ok-to-require-javascript/
Как вы сказали, демография. Интернет распространяется на устройства, у которых не так много энергии, например, на мобильные телефоны. Если ваш сайт можно использовать без javascript, Opera Mini, скорее всего, без проблем покажет ваш сайт.
Два простых вопроса, которые помогут вам решить ...
Если вы ответите утвердительно на оба эти вопроса, дерзайте!
Веб-сайты перемещаются (переместились?) Со статических страниц информации в интерактивные веб-приложения. Без чего-то вроде Javascript или Flash иногда невозможно убедительное взаимодействие с пользователем.
Я думаю, что реализации Javascript в большинстве современных браузеров достигли разумного уровня зрелости, и существует множество фреймворков Javascript UI, которые позволяют создавать очень привлекательные веб-приложения на основе Javascript с использованием веб-сервисов и т. д. (Независимо от платформы внутреннего сервера. ).
Примером является ExtJS - у них есть очень обширная структура виджетов AJAX + UI, которую я недавно использовал для создания полноценного внутреннего веб-приложения для клиента с серверной частью ASP.NET (для веб-сервисов).
5% согласно этой статистике: http://www.w3schools.com/browsers/browsers_stats.asp
Это 21 век. Людям, не разрешающим JavaScript, нужно поспешно покинуть последнее тысячелетие. Это зрелая, широко используемая и очень полезная технология, которая является одной из основ недавнего расширения числа полезных веб-сервисов.
Если вы знаете об ограничениях доступности, которые вы можете ввести, например, для пользователей программ чтения с экрана и т. д.
Одно дело исключать людей, потому что они решили отключить JS или использовать браузер, который его не поддерживает, и совсем другое - исключить их из-за инвалидности.
Хотя недавно был дан ответ, любой, кто столкнется с этим, может быть заинтересован этой страницей a11yproject.com/posts/myth-screen-readers-dont-use-javascrip т, на которой подчеркивается: «Распространенное заблуждение среди веб-разработчиков заключается в том, что программы чтения с экрана читают только страницы, не связанные с JavaScript. Из-за этого заблуждения мы иногда полагаем, что нет необходимости делать Доступны приложения JavaScript и другие функции. Это категорически неверно ».
Я думаю, что времена «только информационных сайтов» прошли. Сейчас мы видим, что WWW становится платформой для веб-приложений, и последние разработки в области браузеров (в частности, ускорение JS) свидетельствуют об этом. На ваш вопрос не может быть ответа «да» / «нет» - вы должны решить, где на содержании сайта <----> континуум веб-приложений находится ваш сайт и насколько важны возможности, предоставляемые JavaScript. На мой взгляд - да, наличие веб-приложений, требующих для работы Javascript, вполне допустимо.
Изящное проектирование - это все, что нужно сделать. Мы переходим / перешли от простых веб-сайтов к веб-приложениям. Единственный вариант, помимо сценариев на стороне клиента, - добавить туда-обратно к серверу.
Я думаю (личное мнение), что «не использовать JavaScript» больше связано с отсутствием понимания того, что такое / делает JavaScript, чем с любыми фактическими рыночными данными, которые показывают, что значительное количество людей просматривают без него.
Я думаю, все сводится к тому, что вы собираетесь делать. Вы пишете веб-приложение? Тогда я думаю, вы обязательно будете использовать javascript и / или что-то вроде GWT. Просто взгляните на все социальные сети и приложения Google, такие как Gmail. Если вы пишете веб-страницу с описанием продуктов и практически без интерактивности, вы можете сделать javascript необязательным.
Вы должны привязать функциональность своего сайта к своей аудитории. При этом каждый современный браузер (за исключением мобильной платформы) включает javascript, и поэтому, если ваша аудитория не включает луддитов с компьютерами десятилетней давности, вы можете предположить, что они имеют javascript.
Таким образом, вам нужно беспокоиться о тех людях, которые специально его отключают. Это включает в себя:
Итак, во-первых, кто ваша аудитория? Есть ли другие веб-сайты, сопоставимые с вашей целью? Посмотрите на их сайт и на успех - они постепенно деградируют, и вы останетесь довольны их уровнем успеха?
Однако если вы ориентируетесь на мобильные приложения, вы не можете гарантировать JavaScript.
-Адам
Разумно разрабатывать сайты, использующие JavaScript, но небезопасно предполагать, что все клиенты поддерживают Javascript, и поэтому важно, чтобы вы обеспечивали удовлетворительный опыт, даже когда JavaScript недоступен.
Я бы сказал, что вы должны смотреть на свою целевую аудиторию. Если вы можете разумно ожидать, что у них будет включен js, и заставить все работать без каких-либо js слишком сложно, то во что бы то ни стало - продолжайте и игнорируйте толпу не-js, если, с другой стороны, вам нужно создать сайт, который будет использоваться очень большой аудиторией / или вы, возможно, создаете правительственный веб-сайт, тогда вы должны убедиться, что все работает, и в таких случаях проще сначала создать сайт, чтобы он работал без каких-либо js, а позже добавим все удобные для экономии времени биты ajaxy.
В целом, однако, почти у всех по умолчанию включен js.
Хотя вы должны знать, что проверка опубликованных пользователем данных на стороне сервера является обязательной в любом случае.
Изящная деградация - необходимость. Как минимум, вы обязательно используете тег NOSCRIPT, чтобы сообщить потенциальному клиенты, во-первых, что вашему сайту требуется javascript, а во-вторых, почему он вам нужен.
Если это для ярких меню и презентаций, которые меня, честно говоря, меньше заботят, то я, вероятно, не побеспокоюсь возвращаться. Если есть реальная причина, по которой вам требуется javascript (проверка на стороне клиента в формах или реальная ситуация, требующая AJAX по соображениям производительности), скажите об этом, и ваши посетители ответят соответствующим образом.
Я устанавливаю расширения, которые ограничивают как Javascript, так и файлы cookie. Веб-сайты, на которых четко не указаны требования к обоим, обычно не получают второго посещения, если в этом нет реальной необходимости.
Вы никогда не должны создавать общедоступный сайт, полагаясь на ЛЮБУЮ технологию / платформу. Пользовательский агент может не отображать цвет (например, программы чтения с экрана), отображать графику (опять же, программы чтения с экрана или текстовые браузеры, такие как ссылки) и т. д.
Создавайте свой сайт по наименьшему общему знаменателю, а затем постепенно улучшайте его, добавляя поддержку определенных технологий.
Чтобы ответить на вопрос напрямую: нет, вы не можете предполагать, что у ваших пользователей есть Javascript, поэтому ваш сайт должен работать без него. Как только это произойдет, улучшите его с помощью Javascript.
«Вы никогда не должны создавать общедоступный сайт, полагаясь на ЛЮБУЮ технологию / платформу» - LOL. Действительно? Вы имеете в виду, что полагаться на какую-то конкретную технологию, например, HTML или HTTP, было бы плохо? : P Ха-ха. Дайте мне передохнуть, в какой-то момент вам нужно на что-то положиться, и JavaScript теперь в этой точке
А как насчет ваших посетителей, которые используют программы чтения с экрана или другие вспомогательные технологии, не поддерживающие Javascript? Разве они не заслуживают доступа к вашему контенту?
Дело не в возможностях браузера, а в управлении пользователем. Люди, которые устанавливают плагин noscript для firefox, чтобы им не приходилось мириться с мусором «удар обезьяны» (та же проблема, которая вызвала переполнение стека), не позволят вашему веб-сайту делать что-либо нестатичное, пока они не доверят вам.
Что касается клиентского программного обеспечения, рассмотрите пользователей / клиентов, которые используют браузер, который поддерживает некоторые, но не все Javascript. Например, большинство браузеров мобильных телефонов немного поддерживают Javascript, но ничего сложного. Браузеры на таких устройствах, как Playstation 3, аналогичны.
Затем есть браузеры, такие как опера мини, которые поддерживают много Javascript, но работают в среде, где сценарии выполняются на сервере, который затем отправляет результаты на мобильное устройство.
Я согласен с большинством респондентов stackoverflow. JavaScript стал зрелым и предлагает «дополнительный» уровень функциональности веб-странице, особенно для форм. Те, кто отключает куки и JS, скорее всего, были укушены во время серфинга в опасных водах. JS - проверенный и надежный инструмент для опытных корпоративных пользователей, которые платят мне на сайтах B2B или в розничной торговле. Пока не появится что-то лучшее (а оно будет), я придерживаюсь JS.
Вы должны разрабатывать веб-сайты с учетом Javascript, но не реализовывать его. Подумайте, создайте его, где каждый щелчок, каждое действие выполняет обратный путь к серверу. Это функция по умолчанию для старых браузеров и тех, в которых не включен JS.
Затем, когда все построено и все работает правильно, добавьте JavaScript, который перехватывает ссылку, кнопку и другие события, и накладывает их стандартные функции на нужные вам функции Javascript.
Создание такого приложения означает, что оно ВСЕГДА будет работать, что в конечном итоге именно то, что вам нужно.
Полученный мудрый ответ заключается в том, что вы можете использовать JavaScript (или любую другую технологию) при условии, что он «изящно ухудшается» ...
У меня есть опыт работы с организациями инвалидов, поэтому доступность важна для меня. Но в то же время я занимаюсь созданием привлекательных, удобных веб-сайтов, поэтому javascript может быть моим сильным союзником. Это трудный вызов, но если вы можете создать богатый сайт с поддержкой javascript, не отталкивая пользователей, не относящихся к js, то сделайте это. Если нет, вам нужно будет посмотреть на контекст сайта и решить, в какую сторону перейти.
Тем не менее, в этом вопросе нет правильного и неправильного. Однако в некоторых странах существует требование создавать «общедоступные» сайты, чтобы они были доступны, поэтому это может быть еще одним фактором в вашем решении. [В Великобритании это Закон о дискриминации по инвалидности ... хотя, насколько мне известно, ни одна компания не была привлечена к ответственности за несоблюдение]
Есть надстройка для Firefox под названием NoScript, которую скачали 27 501 701 раз. Если ваш сайт не будет работать без JavaScript, большинство из этих ребят не захотят его использовать.
Зачем вам устанавливать этот аддон? Вы когда-нибудь хотели избавиться от всплывающих окон на сайте, которые закрывают большую часть полезного текста, от которого вы хотите избавиться? Или отключить флеш-анимацию? Или быть уверенным, что злой сайт не украдет ваши куки?
Пользователи NoScript всегда могли внести сайт в белый список, им просто нужно было знать, что им нужно это сделать.
Поисковые системы не поддерживают JavaScript. Они также слепы и не поддерживают CSS. Поэтому я предлагаю вам убедиться, что часть вашего продукта, которая должна индексироваться поисковыми системами, работает без JavaScript и CSS. После этого все действительно зависит от потребностей ваших пользователей.
Если у вас очень ограниченное подмножество пользователей, вы действительно можете запросить их. Но следует помнить, что у 10% населения есть какая-либо форма нарушения, начиная от проблем со зрением (слабое зрение, дальтонизм и т. д.) Или двигательных функций (низкая ловкость рук). Эти проблемы, как правило, более заметны у пожилых людей и лиц с заведомо инвалидами.
Если ваш сайт будет нацелен на широкую аудиторию пользователей Интернета, пожалуйста, сделайте его деградирующим, но если вы не можете этого сделать, сделайте версию без JavaScript (например, G-mail).
В некоторых корпоративных средах использование Javascript запрещено политикой или брандмауэром. Это закрывает путь к одному из путей вирусной инфекции.
Независимо от того, считаете ли вы это хорошей идеей или нет, помните, что не все имеют полный контроль над своим браузером, и это может быть не их выбор.
Между веб-сайтами и веб-приложениями существует градиент. Однако вы всегда должны иметь возможность сказать «мы создаем веб-сайт» или «мы создаем веб-приложение».
Веб-сайты должны быть читаемыми до простого HTML (без CSS, без изображений, без JavaScript).
Веб-приложения, конечно, могут просто сказать: «Извините, необходим JavaScript» (что также предполагает использование CSS для макета). Приложение должно работать без изображений.
Проблема доступности - единственная важная техническая проблема, все остальные проблемы могут быть решены с социальной точки зрения. Когда один говорит, что javascript снижает доступность, а другой говорит, что веб-приложения могут использовать javascript, можем ли мы взять эти два вместе, чтобы подразумевать, что все слепые люди безработные? Должен быть какой-то импульс для того, чтобы сделать javascript доступным. Может быть, объект программы чтения с экрана на стороне javascript, который может обнаруживать присутствие программы чтения с экрана, а затем, возможно, отправлять подсказки программе чтения с экрана, программы чтения с экрана, которые могут подключаться к браузеру, и, возможно, он склеивается с панелью инструментов программы чтения с экрана.
JavaScript отлично подходит для расширения возможностей браузера, например, карт Google. Но это острый инструмент, поэтому используйте его осторожно.
На веб-сайте моего банка для базовой навигации между страницами используется JavaScript. Вздох. В результате его нельзя использовать с моего мобильного устройства.
Убедитесь, что вы знакомы с Правило наименьшей мощности при рассмотрении JavaScript:
When designing computer systems, one is often faced with a choice between using a more or less powerful language for publishing information, for expressing constraints, or for solving some problem. This finding explores tradeoffs relating the choice of language to reusability of information. The "Rule of Least Power" suggests choosing the least powerful language suitable for a given purpose.
если вы хотите, чтобы ваш сайт просматривали 100 ведущих компаний США. Я бы писал без javascript.
Независимость от Javascript и постепенная деградация важны для приложения, несмотря на фактическую демографию, потому что такое приложение, вероятно, имеет лучший дизайн программного обеспечения.
«Человек-пользователь без Javascript» может быть чисто гипотетическим (например, если вы пытаетесь заработать на своем продукте). Но проектирование для этого гипотетического пользователя поощряет модульный дизайн программного обеспечения, который окупится, если вы продолжите разрабатывать свое приложение.
Javascript предоставляет функциональные возможности. HTML предоставляет данные (на самой странице и через ссылки, указывающие на дополнительные данные). Как правило, выходит далеко за рамки браузерных приложений: хорошо спроектированный программный продукт отделяет данные от функциональности. Все данные должны быть доступны, а функциональность должна быть отдельным слоем, потребляющим данные.
Если ваш Javascript создает данные во время выполнения, то пришло время конкретизировать и выяснить, действительно ли ваша веб-страница является частью программного обеспечения (например, ипотечным калькулятором) или это документ, содержащий данные (например, список процентных ставок по ипотечным кредитам). Это должно сказать вам, имеет ли смысл полагаться на Javascript.
И последнее примечание / пример: демографические данные могут вводить в заблуждение. Сравнительно мало людей просматривают ваш сайт без Javascript, но многие машины (поисковые роботы, майнеры данных, программы чтения с экрана для инвалидов и т. д.) Просматривают ваш сайт без Javascript. Опять же, различие между данными и функциональностью важно - боты просто делают запросы и ищут данные в ответах. Им не нужна функциональность. Но если вашему пользователю нужно вызывать функции только для того, чтобы сделать ваши данные доступными, боты не получают никакой ценности от вашего сайта.
Одно замечание по поводу программ чтения с экрана и других соображений доступности для инвалидов. Это важная демографическая ниша: разум, который управляет данными по-человечески, но может получать данные с вашего сайта только так, как их получают машины. Предоставляя данные на своей странице в чистом виде и семантически, вы делаете их доступными для максимально возможного набора инструментов доступности.
Обратите внимание, что это не исключает Javascript из рассмотрения. Наш пример калькулятора ипотечных кредитов все еще может работать: принимать ввод от пользователя, вызывать Javascript и записывать вывод обратно в чистый слой семантических данных страницы. Программа чтения с экрана сможет это прочитать! А если они не могут, вы поощряете разработку более совершенных программ чтения с экрана, которые могут.
Ну, это зависит от вашей пользовательской базы. Если вы знаете, что люди будут использовать ваш сайт с мобильных устройств, хорошо иметь ненавязчивый JavaScript. Однако, если вы пытаетесь обратиться к толпе технически подкованных людей, не беспокойтесь об этом.
Однако, если вы обращаетесь к толпе, которая может использовать программы чтения с экрана (слепые), я настоятельно рекомендую использовать стандарты WAI-ARIA. Система виджетов Dojo полностью поддерживает это, и это будет отличный и простой способ сделать это.
В любом случае, в большинстве случаев ненавязчивый JavaScript не нужен. Большинство людей с отключенным JavaScript либо используют смартфон, либо используют Lynx, либо имеют установленный NoScript. Он включен по умолчанию во всех основных браузерах, так что вам не о чем беспокоиться.
Наконец, хорошо иметь хотя бы ненавязчивый JavaScript. Теги <noscript> - ваш лучший друг. Например, можно заменить виджет, который рисует звездочки рейтинга текстом. Пример использования додзё:
<div dojoType = "dojox.Rating" stars = "5" value = "4"></div>
<noscript>4/5</noscript>
Если вы ожидаете, что ваше приложение будет работать для всех, вам понадобится резервная копия для всех ваших функций javascript. Если это проверка формы, вы также должны проверить данные на сервере перед их сохранением. Так что ответ - да, все в порядке, но есть резервная копия. Не надейтесь на это.
Как говорят многие, важно учитывать свою пользовательскую базу, но кем бы ни были ваши пользователи, существует большая вероятность, что некоторые из них (по статистике 10%) будут иметь какие-то ограничения, а программы чтения с экрана не любят javascript. Если вы добавляете только простые вещи, меню javascript или что-то в этом роде, просто сделайте его ухудшенным (или не делайте этого). Если для правильной работы сайта требуется javascript, создайте две версии: одну для javascript и одну без.
Я обычно считаю, что что-то слишком тяжелое для javascript очень сложно сделать хорошо деградирующим без того, чтобы javascript переписывал страницу в версию javascript, если пользователь может это принять. Учитывая это, стоит написать две страницы с нуля для сложных вещей.
Я бы сказал, что очень и очень мало веб-сайтов, которые должны работать без какой-либо поддержки для пользователей без javascript. Вам понадобится очень динамичное приложение, которое совершенно не имеет смысла в качестве статических страниц, или вам понадобится аудитория, которую вы можете гарантировать, что все будет в порядке (например, в офисной интрасети, скажем).
Я думаю, это число охватывает только пользователей w3school.com и может быть немного нетипичным - вы можете видеть, что процент Firefox необычно высок.