Чистое решение javascript для исправления иерархии заголовков - PullRequest
0 голосов
/ 23 мая 2019

Чтобы исправить проблемы доступности с иерархией заголовков, требуемой для раздела 508 (Требование 1194.22 (d)), мне нужно переписать иерархию заголовков с помощью JS.

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

H1
  H2
    H4
    H4
    H4
H1
  H3
    H4
    H4
      H5
  H2
    H4

Это должно быть преобразовано в

H1
  H2
    H3
    H3
    H3
H1
  H2
    H3
    H3
      H4
  H2
    H3

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

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

Этот javascript использует jQuery, но может быть адаптирован в vanilla-javascript.Он анализирует страницу для стандартных заголовков (h1 до h6) и изменяет уровень на соответствующий ожидаемый уровень в ранге, учитывая его родительский уровень.

Сложность такого рода сценариев заключается в том, что в вашемНапример, исправление иерархии заголовков путем простого изменения, например, первого h4 на h3, может работать на бумаге, но не является надежным решением.

$(document).ready(function() {
  var level=0, plevel=[0];
  $("h1,h2,h3,h4,h5,h5").each(function() {
    var c_level=$(this)[0].tagName.substr(1);
    var p_level=plevel[plevel.length-1];

    while (c_level<p_level) {
      plevel.pop();
      level--;
      p_level=plevel[plevel.length-1];
    }

    if (c_level>p_level) {
      level++;
      plevel.push(c_level);
    }

    if (c_level!=level) {
      $(this).replaceWith("<h"+(level)+">"+$(this).html()+"</h"+(level)+">");
    }

  });
});
0 голосов
/ 24 мая 2019

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

(Обратите внимание, что Раздел 508 был обновлен пару лет назад, так что он соответствует WCAG 2.0, поэтому ссылка на 1194.22 (d) является старой школой, и вместо этого вам следует обратиться к WCAG 2.0. В этомВ конкретном случае критерий успеха 1.3.1 говорит о заголовках.)

Вполне допустимо иметь

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...