Как объявить, что веб-сайт не поддерживает программы чтения с экрана? - PullRequest
0 голосов
/ 03 октября 2018

Мы можем использовать <noscript>, чтобы сказать Извините, этот сайт требует JavaScript для запуска .

Что является аналогичным способом объявить, что сайт не поддерживает программы чтения с экрана?Что-то вроде <noscreenreader>Sorry, ...</noscreenreader>.


(Краткая предыстория: это приложение зависит от идеи никогда не использовать слова. Оно в значительной степени полагается на изображения для передачи информации.имеет смысл объявить что-нибудь на разговорном языке.)

Ответы [ 4 ]

0 голосов
/ 03 октября 2018

Вы делаете акцент на начальном элементе?Если это так, вы можете добавить дополнительный невидимый текст для чтения с экрана, который будет читаться вместе с элементом, который имеет фокус.Как уже упоминали другие, выполните поиск в Google для класса "sr-only" или посмотрите это: Что такое sr-only в Bootstrap 3? .Возможно, что-то вроде этого:

<button>
  I'm the first focusable element
  <span class="sr-only"> Sorry, this page is not accessible to screen readers</span>
</button>

Если у вас нет начального фокуса, тогда вы можете сделать первый элемент в DOM tabindex="0", который содержит скрытый текст, чтобы при чтении с экранапользователь начинает вкладывать текст в интерфейс, первым делом он услышит текст, но это менее желательное решение, поскольку обычно не требуется, чтобы неинтерактивный элемент имел tabindex="0".Примерно так:

<html>
  <body>
    <span tabindex="0" class="sr-only">Sorry, this page is not accessible to screen readers</span>
    <!-- the rest of your real code -->
  </body>
</html>

Возможное третье решение, аналогичное первому, состоит в том, чтобы добавить дополнительный текст, связанный с вашим первым заголовком или основным элементом, и сфокусироваться на этом элементе, используя tabindex="-1".«-1» означает, что пользователь не может использовать клавишу Tab для доступа к нему.Что-то вроде:

<html>
  <script>
    function myload() {
      document.getElementById("myid").focus();
    }
  </script>
  <body onload="myload()">
    <h1 id="myid" tabindex="-1">
      Welcome to my site
      <span class="sr-only"> Sorry, this page is not accessible to screen readers</span>
    </h1>
  </body>
</html>
0 голосов
/ 03 октября 2018
<h1 style="text-indent: -9999px;"> Sorry, this site does not support screen readers </h1>  

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

Если вы проверите приведенный ниже тест с помощью встроенной программы чтения с экрана в OSX, первые 2 абзаца будут прочитаны, но не третий.

<p>hello world</p>
<p style="text-indent: -9999px;"> Sorry, this site does not support screen readers </p>
<p style="display:none;">display hidden paragraph</p>

https://s.codepen.io/panchroma/debug/yReWOa/PBrNWNdjpnWA https://codepen.io/panchroma/pen/yReWOa

0 голосов
/ 03 октября 2018

В WAI ARIA есть атрибут "alert" role, который будет действовать аналогично видимому окну предупреждения JS для вспомогательных технологий / программ чтения с экрана, то есть по умолчанию его текст будет прочитан сразу после загрузки страницы.

(WAI ARIA расшифровывается как «Инициатива веб-доступности - Accessible Rich Internet Applications» от W3C, которая расширяет возможности веб-приложений для вспомогательных технологий, таких как программы чтения с экрана)

Таким образом, вы можете создать невидимый элемент, связывающийэтот атрибут непосредственно в начале вашего <body>, аналогично моему примеру ниже.

(Примечание: не используйте display: none в таком сообщении - большинство программ чтения с экрана воспримут это какНЕ читайте его текст!)

#screenreader_alert {
  position: fixed;
  left: -50px;
  width: 1px;
  height: 1px;
  color: transparent;
  overflow: hidden;
}
<div id="screenreader_alert" role="alert">Please note: This web page contains no text at all and therefore does not support screenreaders.</div>
<div>There is a DIV element <em>before</em> this one which is invisible due to its CSS settings, but whose text will be read by screenreaders immediately after the page is loaded, due to its ARIA attribute <em>role="alert"</em>. Check the HTML code to see it.</div>

Для дальнейшего чтения: https://w3c.github.io/aria-practices/#alert

0 голосов
/ 03 октября 2018

Программы чтения с экрана работают поверх браузера, поэтому нет простого способа (только некоторые запутанные флэш-техники ), чтобы определить, когда кто-то его использует.

Лучше всего разместить предупреждение в начале содержимого и скрыть его для зрячих пользователей. В этой статье упоминается несколько приемов.

.hidden {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
<div class="hidden">Sorry, this website requires JavaScript to run.</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...