#javascript #html #accessibility
Вопрос:
$("#onReviewClick").click(function()
{ $('html, body').animate({
scrollTop: ($("#scrollHere").offset().top)-100 },
1000); });
У меня есть текст подробнее, этот щелчок прокрутит вниз до нижнего колонтитула страницы и сосредоточится на обзорах. Я хочу, чтобы программа чтения с экрана читала отзывы, когда прокрутка перемещается вниз к части обзора.
Комментарии:
1. Можете ли вы предоставить код, который вы используете для своего
onclick
мероприятия?2. $(«#onReviewClick»). нажмите(функция() { $(‘html, тело’).анимировать({ Вершина прокрутки: ($(«#scrollHere»).смещение().вверху)-100 }, 1000); });
3. можете ли вы обеспечить работу в stackblitz.com , для удобства?
Ответ №1:
Я бы использовал функцию animate
обратного вызова для запуска вашего кода после завершения анимации.
Затем, я полагаю, вы добавляете aria-live="polite"
атрибут к элементу, который вы хотите, чтобы ваш читатель экрана говорил.
$("#onReviewClick").click(function() {
$('html, body').animate({
scrollTop: ($("#scrollHere").offset().top) - 100
}, 1000, function() {
// Animation complete.
$("#scrollHere").attr('aria-live', 'polite');
});
});
Комментарии:
1. Спасибо за помощь, это не сработало. Не могли бы вы, пожалуйста, предоставить какой-нибудь другой способ
2. Вам нужно будет предоставить дополнительную информацию. Ваш HTML, подробная информация о том, как вы используете программу чтения с экрана, что вы пробовали, что не сработало.
Ответ №2:
Самый простой и безопасный способ прокрутить экран и заставить программу чтения с экрана читать в нужном месте-это использовать старые добрые якоря в качестве основы:
<a href="#more">More</a>
.
.
.
<p id="more">More text</p>
Немного менее простым и безопасным, но все еще очень хорошо работающим является немедленное наведение фокуса на элемент, который можно сфокусировать естественным образом или сделать фокусируемым с помощью tabindex=-1:
<a href="#" onclick="document.getElementById('more').focus();">More</a>
.
.
.
<p id="more" tabindex="-1">More text</p>
Я подчеркиваю слово «немедленно«, потому что перемещение фокуса за пределы непосредственного взаимодействия иногда может вызвать проблемы. Это может быть полностью проигнорировано или заставить программу чтения с экрана переключиться в другое место между ними, а затем не следить за вторым изменением фокуса несколько миллисекунд спустя.
Таким образом, выполнение этого в конце анимации, даже если это займет всего несколько десятков миллисекунд, может вызвать проблемы.
Этот ответ не обрадует дизайнеров, но в идеале вы должны взять за основу шаблон ancohr или немедленный фокус, а затем, если сможете, создать свою анимацию поверх него, а не наоборот. С точки зрения доступности, это будет намного надежнее. Кстати, обратите внимание, что пользователь может настроить свое устройство на отключение анимации или ее уменьшение, и вам тоже следует это учитывать.