Читатель экрана объявляет диалог доступное имя дважды при фокусировании кнопки триггера после закрытия диалогаJavascript

Форум по Javascript
Anonymous
Читатель экрана объявляет диалог доступное имя дважды при фокусировании кнопки триггера после закрытия диалога

Сообщение Anonymous »

Я внедряю модальный диалог с правильной доступностью, но я испытываю проблему, в которой читатели экрана дважды объявляют о доступном имени диалога, когда фокус возвращается к кнопке триггера после закрытия диалога. https://codepen.io/team/hwpdas/pen/dyyvjzr>

var trigger = document.getElementById('trigger');
var dialog = document.getElementById('dialog');
var close = document.getElementById('close');

function openDialog() {
dialog.setAttribute('open', '');
close.focus();
close.addEventListener('keydown', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
}
});
document.getElementById('cover').style.display = 'block';
document.addEventListener('keydown', addESC);
}

function closeDialog() {
dialog.removeAttribute('open');
trigger.focus();
document.getElementById('cover').style.display = 'none';
document.removeEventListener('keydown', addESC);
}

var addESC = function(e) {
if (e.keyCode == 27) {
closeDialog();
}
};

trigger.addEventListener('click', function() {
openDialog();
});

close.addEventListener('click', function() {
closeDialog();
});

//isplay: none;
//}< /code>
body {
max-width: 700px;
padding: 1.6em;
font-size: 150%;
}

[role="dialog"] {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
padding: 1em;
max-height: 30vh;
max-width: 50vw;
background: #ddd;
box-shadow: 0.25em 0.25em #aaa;
display: none;
border: 0;
}

[role="dialog"] *+* {
margin-top: 0.5em;
}

#title {
font-weight: bold;
}

button {
cursor: pointer;
background: #215990;
border: 0;
color: #fff;
padding: 0.125em 0.5em;
}

button:focus,
button:hover {
outline: 3px solid #d4aa00;
}

#close {
position: absolute;
top: 0.5em;
right: 0.5em;
margin-top: 0;
line-height: 1;
}

[role="dialog"][open] {
display: block;
}

#cover {
background: green;
opacity: 0.75;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
d< /code>
Open dialog


Title of the dialog
Information provided by the dialog.
×
< /code>
< /div>
< /div>
< /p>
Когда фокус возвращается в кнопку триггера, он должен объявить только один раз. Почему роль диалога вызывает это дубликатное объявление, когда фокус возвращается к кнопке триггера, и какой рекомендуемый способ предотвратить его при поддержании надлежащей доступности или ведет себя правильно?


Подробнее здесь: https://stackoverflow.com/questions/797 ... gger-butto

Вернуться в «Javascript»