Javascript Ajax Изящная деградация с разными страницами?

Я начинаю уделять немного больше внимания тому, чтобы мои javascript и ajax постепенно ухудшались. Что более рекомендуется:

  • работать над включением постепенной деградации в существующий код (может быть сложно) или
  • разработка различных наборов страниц для пользователей, не использующих js.

Я склоняюсь к разным наборам страниц, потому что чувствую, что это проще, и я могу обеспечить наилучшие возможные результаты для каждого типа пользователя (с поддержкой js или с отключенным js). Вы согласны со мной, а если нет, то почему вы не согласны?

Еще меня беспокоят попытки взлома. Например, хакер доходит до версии с поддержкой js, а затем отключает свой js. Есть мысли по этому поводу? Я мало что знаю о взломах, но может ли это быть проблемой безопасности, если я буду использовать отдельные версии?

заранее спасибо


person Chris    schedule 06.10.2009    source источник


Ответы (3)


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

О попытках взлома: вы никогда, никогда, никогда не сможете полагаться на проверку JavaScript на стороне клиента. Все должно быть проверено (или повторно проверено) на стороне сервера, и ваш код на стороне сервера может не делать никаких предположений относительно вводимых пользователем данных. Поэтому я думаю, что сценарий, когда кто-то деактивирует JS во время использования приложения, неуместен. Постарайтесь сохранить единообразие ожидаемого пользовательского ввода для версий, отличных от JS, и версий JS, проверьте его должным образом, и все в порядке.

person Tom Bartel    schedule 09.11.2009

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

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

Однако для существующего сайта это будет зависеть от того, какие функции предоставляет ajax. В общем, вы должны стремиться отразить все функции ajax с отключенным js. Если у вас есть дыры в безопасности в вашей js-версии, то вы, вероятно, также будете в вашей версии, отличной от js. AJAX не может получить доступ к тому, к чему нельзя получить доступ через обычный URL-адрес.

person Gabriel Hurley    schedule 09.11.2009

Возможно, вы захотите попробовать jQuery Ajaxy. Это позволяет вам изящно обновить ваш сайт до полнофункционального ajax-сайта без каких-либо модификаций на стороне сервера, поэтому все по-прежнему работает для пользователей с отключенным javascript и поисковых систем. Он также поддерживает хеши, поэтому кнопки «назад» и «вперед» по-прежнему работают.

Он реализован на этих двух сайтах (о которых я знаю) http://wbhomes.com.au и http://www.balupton.com

person balupton    schedule 28.08.2010