SlideShare una empresa de Scribd logo
1 de 41
JavaScript и доступность веб-сайтов Владимир Агафонкин
Доступность: степень того, насколько возможно пользоваться сайтом как можно более широкой аудитории людей
Доступность: степень того, насколько возможно пользоваться сайтом как можно более широкой аудитории людей  независимо от их физических или технических возможностей
представьте себесреднестатического пользователя Интернет
а что, если ты не среднестатический пользователь?
технические ограничения
технические ограничения браузер, в котором не поддерживается или отключён JavaScript ограниченные или нестандартные устройства ввода/вывода ограничение трафика или пропускной способности канала
физические ограничения
физические ограничения зрительной функции (слепота, плохое зрение, дальтонизм) двигательных функций (в частности движения рук) когнитивные ограничения (нарушения функций памяти, внимания) множество других
как такие люди вообще пользуются Web?
вспомогательные технологии
вспомогательные технологии ,[object Object]
терминалы Брайля
распознаватели речи
экранные увеличители
множество других,[object Object]
с чем могут быть проблемы при использовании JavaScript? навигация (чаще всего строгая зависимость от мыши) скрытый контент оповещение пользователя о динамических изменениях на странице нестандартное поведение браузера (например, Ajax и кнопки вперёд/назад)
два шага к доступности: предоставить не требующую JavaScriptальтернативу всего содержимого и функциональности сделать саму JavaScript-функциональность максимально доступной
доступный JavaScript
в качестве элементов, принимающих важные действия от пользователя, используйте толькоэлементы, которые могут принимать фокусa, input, button, textarea, selectdiv.onclick
события в JavaScript устройство-зависимые onclick ondoubleclick onmouseover onmouseout onmousedown onmouseup onkeypress onkeyup onkeydown устр.-независимые onfocus onblur onchange onselect onclick* *  только для ссылок и элементов форм
используйте по возможности только независимые от устройств событияonclick*, onfocus, onblur, onchange, onselect
при необходимости использовать устройство-зависимые события, применяйте сразу группы аналогичных событий, например:onmouseover + onfocusonmouseout + onbluronmouseup + onkeyup
убедитесь, что на сайте можно попасть куда угодно и сделать что угодно с помощью одной только клавиатуры
обрабатывайте location.hash (чтобы работали ссылки на любой контент)website.com/blabla#tab1website.com/blabla#tab2website.com/gallery#photo1website.com/gallery#photo2
используйте JS-библиотеки для реализации Ajax history-  Really Simple History- jQuery history plugin-  Mootools HistoryManager-  YUI Browser History Manager-  Dojo dojo.back
избегайте использования всплывающих окон<a href=“…” onclick=“window.open(this.href) …
избегайте использования CSS-only решений для динамической функциональности (например, dropdown menus)они обычно работают только с мышью
как сделать сайт с кучей JavaScript-кода работающим без него?
два подхода к разработке: graceful degradation progressive enhancement
graceful degradation: «плавное упрощение» доработка полной версии сайта для функционирования без JavaScript в отдельных местах
progressive enhancement: создать полноценную версию сайта без JavaScript заменить с помощью JavaScript стандартное поведение улучшенным (динамическим)
как совершать эту замену? unobtrusive Javascript (ненавязчивый JavaScript)
unobtrusive JavaScript: поместить весь JS во внешние файлы привязывать функциональность к событиям DOM-элементов
банальный пример: window.onload = function() { var form = document.getElementById('comment-form'); form.onsubmit = function() {	 		doSomeBrilliantAjaxyStuff(); 		... return false;//отмена действия по умолчанию 	} }
пример с jQuery: $(function() { $(‘comment-form’).bind(‘submit’, function(e) { 		doSomeBrilliantAjaxyStuff(); 		... e.preventDefault(); 	}) })
напоследок
люди бываютразные

Más contenido relacionado

Similar a JavaScript и доступность web-приложений

Mobile accessibility Testing / Тестирование доступности мобильного веба
Mobile accessibility Testing / Тестирование доступности мобильного вебаMobile accessibility Testing / Тестирование доступности мобильного веба
Mobile accessibility Testing / Тестирование доступности мобильного вебаDiana Shymbaliova
 
Browzer
BrowzerBrowzer
BrowzerIKTO
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Mini esse po-teme_brauzery
Mini esse po-teme_brauzeryMini esse po-teme_brauzery
Mini esse po-teme_brauzeryLesha Manchuk
 
Mini esse po-teme_brauzery
Mini esse po-teme_brauzeryMini esse po-teme_brauzery
Mini esse po-teme_brauzeryLesha Manchuk
 
Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...
Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...
Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...Yandex
 
Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5DevDay
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтовmetaform
 
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едятHappyDev-lite
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВPavel Tsukanov
 
Безболезненная гаджетизация вашей площадки
Безболезненная гаджетизация вашей площадкиБезболезненная гаджетизация вашей площадки
Безболезненная гаджетизация вашей площадкиAGIMA
 
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опытMaxim Salnikov
 
DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...
DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...
DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...Artur Drobinskiy
 
Социальные сервисы
Социальные сервисыСоциальные сервисы
Социальные сервисыLudmila Ульева
 
живу в Google Chrome #0
живу в Google Chrome #0живу в Google Chrome #0
живу в Google Chrome #0vdas us
 
История развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеИстория развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеlugnsk
 
Samosadny mass csrf attacks via flash ads
Samosadny   mass csrf attacks via flash adsSamosadny   mass csrf attacks via flash ads
Samosadny mass csrf attacks via flash adsDefconRussia
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация4ertenka
 
Лекция 6. Актуальные web-технологии. ПО как сервис
Лекция 6. Актуальные web-технологии. ПО как сервисЛекция 6. Актуальные web-технологии. ПО как сервис
Лекция 6. Актуальные web-технологии. ПО как сервисAnna Kraeva
 

Similar a JavaScript и доступность web-приложений (20)

Mobile accessibility Testing / Тестирование доступности мобильного веба
Mobile accessibility Testing / Тестирование доступности мобильного вебаMobile accessibility Testing / Тестирование доступности мобильного веба
Mobile accessibility Testing / Тестирование доступности мобильного веба
 
Browzer
BrowzerBrowzer
Browzer
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Mini esse po-teme_brauzery
Mini esse po-teme_brauzeryMini esse po-teme_brauzery
Mini esse po-teme_brauzery
 
Mini esse po-teme_brauzery
Mini esse po-teme_brauzeryMini esse po-teme_brauzery
Mini esse po-teme_brauzery
 
Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...
Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...
Кир Белевич, Сергей Горобцов: "Touch it: новое мобильное направление веб-разр...
 
Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтов
 
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
2017-03-26 02 Егор Непомнящих. Что такое web front end, и с чем его едят
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
 
Безболезненная гаджетизация вашей площадки
Безболезненная гаджетизация вашей площадкиБезболезненная гаджетизация вашей площадки
Безболезненная гаджетизация вашей площадки
 
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
 
DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...
DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...
DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы моби...
 
Социальные сервисы
Социальные сервисыСоциальные сервисы
Социальные сервисы
 
живу в Google Chrome #0
живу в Google Chrome #0живу в Google Chrome #0
живу в Google Chrome #0
 
История развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеИстория развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другие
 
Samosadny mass csrf attacks via flash ads
Samosadny   mass csrf attacks via flash adsSamosadny   mass csrf attacks via flash ads
Samosadny mass csrf attacks via flash ads
 
Coding for iPhone
Coding for iPhoneCoding for iPhone
Coding for iPhone
 
браузеры презентация
браузеры презентациябраузеры презентация
браузеры презентация
 
Лекция 6. Актуальные web-технологии. ПО как сервис
Лекция 6. Актуальные web-технологии. ПО как сервисЛекция 6. Актуальные web-технологии. ПО как сервис
Лекция 6. Актуальные web-технологии. ПО как сервис
 

JavaScript и доступность web-приложений