41
JavaScript и доступность веб- сайтов Владимир Агафонкин

JavaScript и доступность web-сайтов

Embed Size (px)

Citation preview

Page 1: JavaScript и доступность web-сайтов

JavaScript и доступность веб-

сайтовВладимир Агафонкин

Page 2: JavaScript и доступность web-сайтов

Доступность:степень того, насколько возможно пользоваться сайтом как можно более широкой аудитории людей

Page 3: JavaScript и доступность web-сайтов

Доступность:степень того, насколько возможно пользоваться сайтом как можно более широкой аудитории людей

независимо от их физических или технических возможностей

Page 4: JavaScript и доступность web-сайтов

представьте себесреднестатического пользователя Интернет

Page 5: JavaScript и доступность web-сайтов
Page 6: JavaScript и доступность web-сайтов

а что, если ты не среднестатический пользователь?

Page 7: JavaScript и доступность web-сайтов

технические ограничения

Page 8: JavaScript и доступность web-сайтов

• браузер, в котором не поддерживается или отключён JavaScript

• ограниченные или нестандартные устройства ввода/вывода

• ограничение трафика или пропускной способности канала

технические ограничения

Page 9: JavaScript и доступность web-сайтов

фи

зи

чески

е

огр

ани

чени

я

Page 10: JavaScript и доступность web-сайтов

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

• когнитивные ограничения (нарушения функций памяти,

внимания)

• множество других

физические ограничения

Page 11: JavaScript и доступность web-сайтов

как такие люди вообще пользуются Web?

Page 12: JavaScript и доступность web-сайтов

вспомогательные технологии

Page 13: JavaScript и доступность web-сайтов

•скрин-ридеры•терминалы Брайля•распознаватели речи•экранные увеличители•множество других

вспомогательные технологии

Page 14: JavaScript и доступность web-сайтов

• семантическая вёрстка (привет, Вадим :)

• правильное использование JavaScript

как сделать сайт доступным?

Page 15: JavaScript и доступность web-сайтов

• навигация (чаще всего строгая зависимость от мыши)

• скрытый контент• оповещение пользователя о

динамических изменениях на странице• нестандартное поведение браузера (например, Ajax и кнопки вперёд/назад)

с чем могут быть проблемы при использовании JavaScript?

Page 16: JavaScript и доступность web-сайтов

1. предоставить не требующую JavaScript альтернативу всего содержимого и функциональности

2. сделать саму JavaScript-функциональность максимально доступной

два шага к доступности:

Page 17: JavaScript и доступность web-сайтов

доступный JavaScript

Page 18: JavaScript и доступность web-сайтов

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

a, input, button, textarea, selectdiv.onclick

Page 19: JavaScript и доступность web-сайтов

события в JavaScriptустройство-

зависимые• onclick• ondoubleclick• onmouseover• onmouseout• onmousedown• onmouseup• onkeypress• onkeyup• onkeydown

устр.-независимые• onfocus• onblur• onchange• onselect• onclick* * только для ссылок

и элементов форм

Page 20: JavaScript и доступность web-сайтов

2. используйте по возможности только независимые от устройств события

onclick*, onfocus, onblur, onchange, onselect

Page 21: JavaScript и доступность web-сайтов

3. при необходимости использовать устройство-зависимые события, применяйте сразу группы аналогичных событий, например:

onmouseover + onfocusonmouseout + onbluronmouseup + onkeyup

Page 22: JavaScript и доступность web-сайтов

4. убедитесь, что на сайте можно попасть куда угодно и сделать что угодно с помощью одной только клавиатуры

Page 23: JavaScript и доступность web-сайтов

5. обрабатывайте location.hash (чтобы работали ссылки на любой контент)

website.com/blabla#tab1website.com/blabla#tab2

website.com/gallery#photo1website.com/gallery#photo2

Page 24: JavaScript и доступность web-сайтов

6. используйте JS-библиотеки для реализации Ajax history

- Really Simple History- jQuery history plugin- Mootools HistoryManager- YUI Browser History Manager- Dojo dojo.back

Page 25: JavaScript и доступность web-сайтов

7. избегайте использования всплывающих окон

<a href=“…” onclick=“window.open(this.href) …

Page 26: JavaScript и доступность web-сайтов

8. избегайте использования CSS-only решений для динамической функциональности (например, dropdown menus)

они обычно работают только с мышью

Page 27: JavaScript и доступность web-сайтов

как сделать сайт с кучей JavaScript-кода

работающим без него?

Page 28: JavaScript и доступность web-сайтов

1.graceful degradation2.progressive enhancement

два подхода к разработке:

Page 29: JavaScript и доступность web-сайтов

graceful degradation:«плавное упрощение»

доработка полной версии сайта для функционирования без JavaScript в отдельных местах

Page 30: JavaScript и доступность web-сайтов

progressive enhancement:1. создать полноценную версию сайта без JavaScript

2. заменить с помощью JavaScript стандартное поведение улучшенным (динамическим)

Page 31: JavaScript и доступность web-сайтов

unobtrusive Javascript(ненавязчивый JavaScript)

как совершать эту замену?

Page 32: JavaScript и доступность web-сайтов

1. поместить весь JS во внешние файлы

2. привязывать функциональность к событиям DOM-элементов

unobtrusive JavaScript:

Page 33: JavaScript и доступность web-сайтов

window.onload = function() {var form = document.getElementById('comment-

form');form.onsubmit = function() {

doSomeBrilliantAjaxyStuff();...return false; //отмена действия по

умолчанию}

}

банальный пример:

Page 34: JavaScript и доступность web-сайтов

$(function() {$(‘comment-form’).bind(‘submit’,

function(e) {doSomeBrilliantAjaxyStuff();...e.preventDefault();

})})

пример с jQuery:

Page 35: JavaScript и доступность web-сайтов

напоследок

Page 36: JavaScript и доступность web-сайтов

люди бывают разные

Page 37: JavaScript и доступность web-сайтов
Page 38: JavaScript и доступность web-сайтов
Page 39: JavaScript и доступность web-сайтов
Page 40: JavaScript и доступность web-сайтов

дайте каждому шанс

воспользоваться вашим сайтом

Page 41: JavaScript и доступность web-сайтов

спасибо!вопросы?

[email protected]