В общем, вы должны организовать свой HTML как
<body>
<div>
<!-- your main page -->
</div>
<div style="visibility:hidden">
<!-- your dialog -->
</div>
</body>
, чтобы диалог был «родным братом» главной страницы.Когда ваш диалог отображается, вы можете добавить aria-hidden="true"
на главную страницу, и это полностью «скроет» фоновую страницу от программ чтения с экрана.VoiceOver не позволит вам провести пальцем, чтобы перейти на фоновую страницу, если она скрыта.
<body>
<div aria-hidden="true">
<!-- your main page -->
</div>
<div style="visibility:visible">
<!-- your dialog -->
</div>
</body>
Примечание использование атрибута CSS visibility
в диалоговом окне.См. https://developer.paciellogroup.com/blog/2018/06/the-current-state-of-modal-dialog-accessibility/ для получения дополнительной информации об этом.Посмотрите на заголовок «Дополнительные ошибки, которые нужно остерегаться».
Также обратите внимание, что вам все еще нужно перехватить фокус клавиатуры в диалоговом окне.aria-hidden
не влияет на клавиатуру, он взаимодействует только с программой чтения с экрана.Для этого вы можете использовать inert
атрибут и полизаполнение.См. Вышеупомянутый блог для информации об этом тоже.