Verificador de acessibilidade
O verificador lê o conteúdo do editor e aponta o que dificultaria o uso com um leitor de tela ou por pessoas com baixa visão. Ele já vem embutido e está incluído na licença; não é um complemento pago. A partir da versão 2.6.12 do editor, ele aplica 18 regras, e a maioria oferece uma correção com um clique, que ajusta a marcação enquanto o autor fornece o texto.
Ele verifica o conteúdo, não o editor: para saber como o próprio editor se comporta para quem usa teclado e leitor de tela, veja Accessibility (WCAG 2.2 AA).
Como usar
O botão da barra de ferramentas abre um painel com a lista do que foi encontrado; ao selecionar um problema, ele é destacado no documento. Erros são coisas que deixam o conteúdo inutilizável para alguém; avisos são coisas que dificultam o uso.
// The checker is a plugin; it loads with all_plugins.js.
var editor = new RichTextEditor("#div_editor");
editor.accessibilityChecker.open(); // show the panel
editor.accessibilityChecker.toggle(); // show or hide it
editor.accessibilityChecker.close();
// Run it yourself - for example before saving - and read the result.
var result = editor.accessibilityChecker.run();
result.issues.forEach(function (issue) {
console.log(issue.code, issue.severity, issue.message, issue.path);
});
// Block a save while errors remain, and let warnings through.
function hasBlockingIssues() {
return editor.accessibilityChecker.run().issues.some(function (i) {
return i.severity === "error";
});
}Cada problema traz um code das tabelas abaixo, uma severity igual a error ou warning, uma message escrita para o autor e um path que identifica o elemento.
Imagens, links, cor e idioma
| Regra | Nível | O que detecta | Correção com um clique |
|---|---|---|---|
image-missing-alt | Erro | Uma imagem sem texto alternativo. O leitor de tela anuncia apenas “imagem”. | Digite a descrição; ela é gravada em alt. |
image-alt-filename | Erro | Texto alternativo que é um nome de arquivo (IMG_4021.jpg), o que não descreve nada. | Digite uma descrição de verdade. |
image-alt-too-long | Aviso | Texto alternativo com mais de 150 caracteres: cansativo de ouvir. | Digite uma descrição mais curta. |
link-empty | Erro | Um link sem texto, anunciado apenas como “link”. | Adicione o texto do link, ou um aria-label quando o link for um ícone. |
link-ambiguous-text | Aviso | “Clique aqui”, “leia mais”: inúteis na lista de links de um leitor de tela. | — (reescreva o texto você mesmo) |
link-adjacent-duplicate | Aviso | Um link de imagem ao lado de um link de texto para o mesmo destino: anunciado duas vezes. | Mescla os dois em um único link. |
contrast-insufficient | Erro | Texto abaixo do contraste WCAG AA: 4.5:1 para texto comum, 3:1 para texto grande. | — (escolha outra cor) |
duplicate-id | Erro | Dois elementos com o mesmo id, de modo que qualquer rótulo que aponte para ele é resolvido para o primeiro. | — (altere um dos ids) |
language-of-parts | Aviso | Um trecho de texto em outro sistema de escrita sem o atributo lang, que acaba lido com a voz errada. | Marca o trecho com o idioma que você escolher. |
Títulos e estrutura
| Regra | Nível | O que detecta | Correção com um clique |
|---|---|---|---|
heading-empty | Aviso | Um título sem texto, que ainda aparece na estrutura do documento. | Digite o texto do título. |
heading-level-skip | Aviso | Um salto de H1 para H3: a estrutura perde um nível. | Converte para o nível seguinte. |
paragraph-as-heading | Aviso | Texto grande em negrito sozinho em uma linha: parece um título, mas não dá para navegar até ele. | Converte em um título de verdade. |
fake-list | Aviso | Linhas digitadas como “1.” ou “-”: não são anunciadas como lista, e a contagem de itens se perde. | Converte em uma lista de verdade. |
blockquote-as-indent | Aviso | Um blockquote usado para recuo, anunciado como citação. | — (use o botão de recuo) |
Tabelas
| Regra | Nível | O que detecta | Correção com um clique |
|---|---|---|---|
table-missing-header | Aviso | Uma tabela de dados sem células de cabeçalho, de modo que nenhuma coluna ou linha tem nome. | Promove a primeira linha a cabeçalho, ou marca a tabela como apenas de layout. |
table-header-empty | Erro | Uma célula de cabeçalho sem texto: a coluna que ela rotula é anunciada sem nome. | Digite o rótulo, ou rebaixe a célula a uma célula comum. |
table-missing-caption | Aviso | Uma tabela de dados sem legenda, de modo que quem ouve entra nela sem saber o que contém. | Digite a legenda. |
layout-table-semantics | Erro | Uma tabela de layout que ainda tem células de cabeçalho ou legenda, anunciando relações que não existem. | Remove a marcação de tabela de dados. |
Corrigir um problema
Uma correção altera a marcação; ela nunca inventa texto. Quando uma regra precisa de texto, passe-o como parâmetro e o verificador o grava no lugar certo e depois roda de novo, para que a lista continue correta.
// Repair issue 0. The options an issue needs depend on its rule:
// the author supplies words, the editor does the markup.
var issues = editor.accessibilityChecker.getIssues();
editor.accessibilityChecker.repair(0, { altText: "Crew fitting the new roof" }); // image-missing-alt, image-alt-filename, image-alt-too-long
editor.accessibilityChecker.repair(0, { headingText: "Opening hours" }); // heading-empty
editor.accessibilityChecker.repair(0, { targetLevel: 2 }); // heading-level-skip, paragraph-as-heading
editor.accessibilityChecker.repair(0, { captionText: "Sales by month" }); // table-missing-caption
editor.accessibilityChecker.repair(0, { markLayout: true }); // table-missing-header, as a layout table
editor.accessibilityChecker.repair(0, {}); // fake-list, link-adjacent-duplicate: nothing to supplyTrês regras não têm correção automática, e isso é proposital: texto de link ambíguo, contraste insuficiente e id duplicado exigem uma decisão humana sobre o texto, a cor ou qual elemento fica com o id.
O que ele não faz
- Ele lê o conteúdo do editor, não a sua página publicada: estilos aplicados pelo seu site podem alterar o contraste depois de salvar.
- Ele não consegue avaliar se o texto alternativo é preciso, apenas se ele existe, se não é um nome de arquivo e se não é longo demais.
- Uma frase em outro idioma escrita no mesmo sistema de escrita (francês dentro de um texto em inglês) não é detectável; a regra de idioma se baseia no sistema de escrita.
- Ele não substitui os testes com um leitor de tela real antes de um lançamento.