Verificação ortográfica
Ativa o verificador ortográfico do próprio navegador na área de edição e oferece um comando Spell Check que pode abrir um painel de revisão alimentado pelo seu próprio serviço de ortografia. O editor não inclui dicionários: sem um serviço, a verificação é o que o navegador e o sistema operacional do usuário oferecem, nos idiomas que ele tiver instalados.


Ative o recurso
O recurso é o plugin spellcheck.js (também incluído em plugins/all_plugins.js). O botão é spellcheck ("Spell Check"). Ele está na barra de ferramentas full e no painel "more" da barra de ferramentas padrão, e o menu de barra o lista como "Spell check". Para colocá-lo na sua própria barra de ferramentas, adicione spellcheck à string da barra de ferramentas.
Com o plugin carregado, o verificador nativo fica ativado e nada mais é necessário. Para ter o painel de revisão, forneça um resolver: uma função que recebe o texto simples do documento e retorna os problemas, ou uma promise deles.
// A stand-in for your spelling service: returns [{ word, offset, length, suggestions }].
var dictionary = { teh: ["the", "tech"], jumpd: ["jumped", "jumps"], befor: ["before", "befog"] };
var editor = new RichTextEditor("#editor", {
toolbar: "full",
spellCheckResolver: function (text) {
var issues = [];
text.replace(/[A-Za-z]+/g, function (w, offset) {
var s = dictionary[w.toLowerCase()];
if (s) issues.push({ word: w, offset: offset, length: w.length, suggestions: s });
});
return Promise.resolve(issues);
}
});
Em uma aplicação real, o resolver chama o seu servidor, que executa um verificador como Hunspell ou LanguageTool e converte a resposta para esse formato:
spellCheckResolver: function (text) {
return fetch("/spell", { method: "POST", body: text }).then(function (r) { return r.json(); });
}
Opções
| Opção | Padrão | O que faz |
|---|---|---|
spellCheckEnabled | true | Define spellcheck="true" ou "false" na área de edição quando o editor inicia. |
spellcheck | true | A chave do próprio core do editor para o mesmo atributo. O atributo só é "true" quando as duas opções são true. |
spellCheckResolver | null | function (text) que retorna um array de { word, offset, length, suggestions }, ou uma promise de um array. Sem ela, o comando só ativa o verificador nativo. |
text_spellcheck, text_spellchecktitle, text_spellchecknative, text_spellcheckclean, text_sp_* | Inglês | Rótulo do botão, título do painel e mensagens. Os pacotes de idioma os definem. |
Como usar
- Sem resolver. O comando define
spellcheck="true"na área de edição, dá foco a ela e mostra uma mensagem curta na parte de baixo da página: "Browser spell-check is on — misspellings are underlined as you type." Isso também reativa o verificador nativo se você tiver começado comspellCheckEnabled: false. As correções são feitas pelo menu de contexto do próprio navegador. - Com um resolver. O comando envia o
innerTextdo documento ao resolver e abre o painel Spelling. Cada problema mostra a palavra e até seis sugestões. Clicar em uma sugestão substitui a palavra e deixa a linha em cinza. "No spelling issues found." aparece quando a lista está vazia, e "Nothing to check." quando o documento está vazio. - Um resolver que rejeita mostra "Spell-check service error."; um que demora mais de 12 segundos mostra "Spell-check timed out."; um que lança uma exceção mostra "Spell-check error.".
O que você precisa saber
- A substituição é feita pela palavra, não pela posição. Uma sugestão substitui a primeira ocorrência de
wordcomo palavra inteira no documento (o texto dentro decodeepreé ignorado).offsetelengthnão são usados; por isso, se uma palavra estiver escrita errado duas vezes, cada clique corrige a próxima ocorrência a partir do início. - As substituições não são etapas de desfazer. Na 2.6.12, desfazer depois de clicar em uma sugestão não traz a palavra antiga de volta.
- Idiomas. O plugin não tem configuração de idioma. O verificador nativo usa os dicionários do navegador e do sistema operacional do usuário; com um resolver, o idioma é o que o seu serviço verifica. Passe-o a partir da sua página, por exemplo
fetch("/spell?lang=fr", …). - O seu texto vai para o seu serviço. Todo o texto simples do documento é passado ao resolver a cada verificação. O plugin em si não envia nada para lugar nenhum.
- Nada é adicionado ao HTML salvo. O atributo
spellcheckfica na área de edição, não no conteúdo.
Relacionados: demonstração de verificação ortográfica, comandos de barra.