Как работать с браузерами, где JavaScript может быть отключен? - PullRequest
3 голосов
/ 04 июня 2010

Предположим, я разрабатываю веб-приложение, которое сильно зависит от JavaScript и использует AJAX для всех команд POST для хранения данных и т. Д.

Как быть с теми ситуациями, когда у пользователя может быть отключен JavaScript? Разумно ли требовать, чтобы браузер пользователя включал его? Есть ли лучшие практики для таких ситуаций?

Ответы [ 5 ]

6 голосов
/ 04 июня 2010

Используйте теги <noscript>, чтобы пользователи знали, что они не могут использовать сайт без Javascript. Это не лучшая практика, но на данный момент это обычное явление, и большинство пользователей, у которых ее нет, не будут находиться под дождем.

Тем не менее, если вы можете предоставить версию сайта, которая не требует Javascript (представьте себе деградированную версию gmail), это, безусловно, превосходное решение. Без этого вы потеряете мобильных серферов, а также слепых и других людей с ограниченными возможностями. И люди, которые слишком упрямы, чтобы использовать JS, но мы не заботимся о них.

4 голосов
/ 04 июня 2010

Лично я считаю, что не нужно ожидать от людей включения Javascript.

Если вы не хотите поддерживать не-Javascript, это просто:

<noscript>
    This site works better with Javascript turned on.
</noscript>

Возле вершины.

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

Например, если у вас есть форма:

<form action="" method="POST">
    <input type="text" name="name">
    <input type="submit">
</form>

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

Регулярно вышеприведенная форма отправляется сама на себя. С Javascript вы можете подключиться и сделать так, чтобы Submit происходил через AJAX вместо загрузки новой страницы.

2 голосов
/ 04 июня 2010

Ключевым моментом здесь является понятие «изящной деградации». Вы хотите предложить наилучший возможный опыт, несмотря на отсутствие поддержки javascript. Для AJAX это обычно означает выполнение запросов на полную страницу, а не на приятные динамические запросы, к которым мы привыкли; POST также должен будет отправить через HTML и загрузить новую страницу.

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

Любой стоящий сайт стоит сделать доступным.

1 голос
/ 04 июня 2010

Зависит от сайта; что-то вроде Google Maps, например, явно просто не будет работать без Javascript. Так что просто показывать элемент noscript, вежливо упомянув, что он понадобится для просмотра сайта - это нормально.

Вероятно, лучше всего избегать покровительственных сообщений "вам нужен новый браузер"; по ряду причин они могут быть не в состоянии или просто решили установить NoScript или аналогичный. Согласно Mozilla, NoScript имел почти 70 миллионов загрузок ; очевидно, значительная часть из них будет повторять закачку для одного и того же человека, но там может быть легко установлено 10 миллионов человек - это немаловажно.

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

0 голосов
/ 15 января 2018

Вы можете отправить данные формы через атрибут action. Когда JavaScript включен, удалите атрибут с помощью removeAttribute или setAttribute. Таким образом, когда пользователи, не являющиеся JS, используют браузер, они все еще могут отправлять формы. Однако в бэкэнд-коде вы также должны поддерживать не-JS, что намного лучше, чем использование <noscript> или no-js (Mordenizr).

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

Пока что это лучшее решение, которое я могу придумать. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...