Стоит ли кодировать разные функции для пользователей с отключенным JavaScript? - PullRequest
21 голосов
/ 03 декабря 2008

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

a) Используйте простой javascript, те пользователи, у которых он отключен, пропускают

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

c) Кодирование с поддержкой как javascript, так и javascript

Я не совсем уверен, так как сеть постоянно меняется, что вы рекомендуете?

Ответы [ 12 ]

24 голосов
/ 03 декабря 2008

Изящная деградация - убедитесь, что сайт работает без JavaScript, затем добавьте колокольчики для тех, у кого включен JavaScript.

16 голосов
/ 03 декабря 2008

Все остальные сделали хорошие комментарии, но есть несколько других соображений, которые следует сделать.

Иногда javascript будет размещен в другом домене и будет подвержен тайм-ауту.

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

По этой причине следует избегать «блокирующих» скриптов (т. Е. Записи документа в строке), таких как те, что присутствуют в трекере Google, или, по крайней мере, они должны появляться на странице как можно позже, чтобы страница отображалась независимо от того, отображается она или нет. домен истекает или нет.

Если вы обслуживаете JS со сломанного / злонамеренного сервера, намеренно или случайно, вы можете остановить рендеринг страницы, просто имея скрипт, который обслуживает этот javascript, который просто вызывает "sleep (forever)", как только он отправил все заголовки.

Некоторые люди используют NoScript

Как и в случае вышеуказанной проблемы, иногда клиентская среда может блокировать определенные источники сценариев, будь то выбор пользователей или другие причины (например: удовлетворение безопасности браузера, нечетные антивирусные / антивирусные приложения). Самым популярным и контролируемым примером этого является NoScript, и я сам параноидально блокирую некоторые из популярных сервисов отслеживания / рекламы с ним (некоторые прокси-серверы будут делать это тоже).

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

Моя рекомендация:

  1. Использовать Firebug
  2. Используйте NoScript и блокируйте все -> Смотрите, сайт по-прежнему работает
  3. Включить основные сценарии сайта, без которых вы ничего не можете сделать -> Смотрите, сайт по-прежнему работает, а firebug не скулит.
  4. Включить сторонние материалы -> Смотрите, сайт по-прежнему работает, а firebug не скулит.

Существует множество других сложностей, которые могут возникнуть, но удовлетворение вышеуказанных 2 должно решить большинство из них. Просто предположите, что по какой-либо причине один или несколько ресурсов, составляющих страницу, могут самопроизвольно исчезнуть (они это делают постоянно), и вы хотите, чтобы страница «пережила» эту проблему как можно более дружелюбно. Для проблем, которые могут сохраняться в течение <10 секунд, это не так уж и плохо, обновите страницу и исправьте ее, но если это может вызвать проблему, и severley препятствует удобству использования в течение часа или более за один раз. </p>

По сути, вместо того, чтобы думать «о, есть пользователи крайнего случая, у которых нет javascript», попробуйте придумать более длинные строки «действительно легко что-то пойти не так, и у вас есть ALL наших пользователей с испорченным javascript. Ой! Давайте попробуем сделать так, чтобы мы не «по-настоящему терзали себя, когда это произошло»

(Я видел, как обновляются IE и используют javascript для всего этого браузера, пока люди, которые написали сценарии, не найдут обходной путь. Потеря всех ваших клиентов IE - нехорошая вещь)

:set sarcasm

:set ignoreSpelling

:set iq=76

Не волнуйтесь, это всего 5% рынка Нише

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

Никто не хочет их в качестве вашего основного клиента, не так ли? Нише рынки. Пфф. Кому интересно!

:set nosarcasm

13 голосов
/ 03 декабря 2008

Рассмотрите свою аудиторию

"Изящно деградировать" - это, как правило, лучший ответ. Но многие сайты теперь зависят от JS - особенно AJAX.

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

Если ваша аудитория может получить доступ к вашему сайту с мобильных устройств, не думайте, что у них есть JavaScript, и даже не предполагайте, что они должным образом поддерживают CSS. Старайтесь изящно деградировать до чистого HTML.

12 голосов
/ 18 декабря 2008

Я многому научился из своего вопроса: Что с теми, кто не пользуется Javascript?

Перейти с Ajax и Web 2.0. Так работает сеть, и это прекрасно. Разве Stackoverflow не радует? С выключенным Javascript это не так хорошо.

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

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

8 голосов
/ 03 декабря 2008

Как уже говорили другие, оно должно "изящно деградировать".

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

На сайте, который я разрабатываю, есть всплывающее меню на основе JavaScript. С отключенным Javascript все всплывающие окна всегда открыты. Он не выглядит так круто, как с JS, но все же может использоваться для навигации по сайту.

5 голосов
/ 03 декабря 2008

Это зависит от того, сколько у вас есть времени на разработку и поддержку обоих решений, и сколько стоят для вас пользователи, не поддерживающие JavaScript.

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

3 голосов
/ 04 декабря 2008

Код вашего веб-сайта с поддержкой минимального вида браузера. Тогда все больше людей смогут пользоваться вашим сайтом без разочарований, даже если у них не будут включены все функции, такие как Flash, Javascript и Java. Возможно, будет нецелесообразно продолжать поддерживать древние браузеры, скажем, Netscape Navigator 4, потому что можно разумно ожидать, что пользователь будет поддерживать свой компьютер в актуальном состоянии. Однако такие функции, как Javascript, Flash и Java, могут быть дырами в безопасности в старых или современных браузерах, а также раздражать.

Ни один из моих родителей не поддерживает Javascript или Flash, потому что у них слишком много опыта, когда они замедляют и без того медленное соединение, ломают свои браузеры или больше раздражают сайты, которые используют его глупо (а это много из них ...) чем полезная особенность. Это просто плохой дизайн, если, например, ваша форма требует вызова AJAX, и вы не можете нажать кнопку отправки, чтобы отправить форму, когда Javascript отключен.

Моя мама недавно была очень расстроена, обнаружив, что теперь она не может переходить по страницам результатов eBay, поскольку для каждой из них требуется Javascript. Единственный способ увидеть следующую страницу результатов - это включить Javascript или показать больше результатов на странице. Теперь, по какой причине ссылки на страницы требуют Javascript, а ссылки «результаты на страницу» - это просто ссылки? Они должны все быть простыми старыми ссылками HTML. Возможно, Javascript можно было бы использовать для добавления в навигацию каких-то шуток, но пользователь не должен быть наказан плохим интерфейсом за отключение Javascript. Это глупо со стороны eBay, и это вызывает чрезмерные хлопоты для их пользователей.

2 голосов
/ 20 августа 2010

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

2 голосов
/ 03 декабря 2008

Я один из тех, кто использует No-Script. И я могу сказать вам, что сайты, которые используют javascript и не работают без него, чрезвычайно раздражают, stackOverflow ... Нет, мы не ожидаем, что это будет очень модно, если я добавлю голосовую ссылку на загрузку новой страницы с надписью "Спасибо . "

Мы ожидаем, что сможем использовать сайт с разумными ограничениями, но никогда не отображаем страницу, на которой написано, что JS должен быть включен, даже если сайт без нее не работает. И да, если ваш сайт убедит нас остаться, мы включим. Для функции, которая не используется на сайте, также может потребоваться JavaScript.

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

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

1 голос
/ 03 декабря 2008

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

Для веб-приложений:

При создании веб-приложения для стандартной интернет-аудитории я бы учел три следующих факта:

  1. 95% -97% потенциальных пользователей будут иметь включенный JavaScript.
  2. Иногда установленным пользователям потребуется доступ к функциям, когда JavaScript недоступен.
  3. 3% -5% потенциальных пользователей намеренно отключат JavaScript.

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

Однако, учитывая второй факт, вы должны всегда предоставлять средства, с помощью которых ваши пользователи могут получить доступ к основным функциям без JavaScript . Вам нужно предложить каждую функцию? Возможно нет. Но пользователь должен иметь возможность выполнить свою работу. Это будет радовать ваших пользователей, когда они временно окажутся без JavaScript.

Учитывая третий факт, я бы также предоставил подробный обзор, чтобы попытаться побудить этих пользователей включить JavaScript .

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

(Имейте в виду, что JavaScript делает доступность более серьезной проблемой, чем она есть. Пожалуйста, приложите усилия, чтобы ваши приложения могли использовать люди с ограниченными возможностями.)

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