В какой-то момент в последнее время (я полагаю, во время обновления v80) Chrome начал отправлять все содержимое элемента aria-live в программу чтения с экрана при каждом добавлении контента. До этого он только анонсировал дополнения. Firefox по-прежнему работает, как положено, только объявляя о дополнениях к этому элементу. Я тестирую с использованием NVDA, но мои пользователи сообщают о том же поведении и с J AWS. Вот некоторый простой код, иллюстрирующий поведение (вам нужно иметь программу чтения с экрана, чтобы понять эту идею).
<html>
<head>
<script>
function addtologinner()
{
document.getElementById('log').innerHTML += '<div><p>Event happened at ' + gettime() + '</p></div>';
}
function addtologappend()
{
var div = document.createElement('div');
div.innerHTML = '<p>Event happened at ' + gettime() + '</p>';
document.getElementById('log').appendChild(div);
}
function gettime()
{
return (new Date()).toJSON().slice(11,19);
}
</script>
</head>
<body>
<button onclick="addtologappend();">Append to Log</button>
<button onclick="addtologinner();">Add to innerHTML</button><br />
<div id="log" aria-live="polite" aria-atomic="false" aria-relevant="additions text" role="log"></div>
</body>
</html>
Раньше это работало во всех основных браузерах, так как отчет о чтении экрана только изменения, но мои пользователи сообщили об этой проблеме на этой неделе. Изменение значений атрибутов aria-atomi c и относящихся к aria ничего не дает. Это как если бы Chrome больше не уважал эти атрибуты, когда он использовал по умолчанию false / дополнения соответственно. У меня не было возможности провести тестирование в Edge или Safari, большинство моих пользователей используют Chrome. Любые идеи о том, как обойти это? Я не нашел ничего в последних примечаниях к патчу для версии 80, касающихся этого.