← Toute la documentation

Vérification orthographique

Active le correcteur du navigateur dans la zone d’édition et fournit une commande Spell Check qui peut ouvrir un panneau de révision alimenté par votre service. L’éditeur n’inclut aucun dictionnaire : sans service, la correction dépend du navigateur et du système de l’utilisateur, dans les langues installées.

Le panneau Spelling au-dessus de l’éditeur : 3 problèmes, Teh avec les suggestions the et tech, jumpd avec jumped et jumps, befor avec before et befog, et un bouton Done
Le panneau de révision avec un résolveur connecté. Chaque suggestion est un bouton remplaçant le mot.
Une ligne dans l’éditeur avec des soulignements rouges ondulés sous Teh, jumpd, befor, Anothr et sentense
Sans résolveur : le correcteur du navigateur souligne les fautes pendant la saisie (Chromium sur Windows).

Activation

Cette fonctionnalité est fournie par le plugin spellcheck.js (également inclus dans plugins/all_plugins.js). Le bouton est spellcheck (« Spell Check »). Il figure dans la barre full et dans le panneau « more » de la barre par défaut ; le menu de commandes slash le présente comme « Spell check ». Ajoutez spellcheck à la chaîne de votre propre barre d’outils.

Une fois le plugin chargé, le correcteur natif est actif sans autre configuration. Pour obtenir le panneau de révision, fournissez un résolveur : une fonction recevant le texte brut du document et renvoyant les problèmes, directement ou par une Promise.

// 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);
  }
});

Dans une application réelle, le résolveur appelle votre serveur, qui exécute un correcteur comme Hunspell ou LanguageTool et convertit sa réponse dans ce format :

spellCheckResolver: function (text) {
  return fetch("/spell", { method: "POST", body: text }).then(function (r) { return r.json(); });
}

Options

OptionValeur par défautFonctionnement
spellCheckEnabledtrueDéfinit spellcheck="true" ou "false" sur la zone d’édition au démarrage.
spellchecktrueOption du noyau de l’éditeur pour le même attribut. L’attribut vaut "true" uniquement si les deux options valent true.
spellCheckResolvernullfunction (text) renvoyant un tableau de { word, offset, length, suggestions }, ou une Promise de tableau. Sans cette fonction, la commande active uniquement le correcteur natif.
text_spellcheck, text_spellchecktitle, text_spellchecknative, text_spellcheckclean, text_sp_*AnglaisLibellé du bouton, titre du panneau et messages. Les modules de langue les définissent.

Utilisation

  • Sans résolveur. La commande définit spellcheck="true" sur la zone d’édition, lui donne le focus et affiche brièvement en bas de page : « Browser spell-check is on — misspellings are underlined as you type. » Cela réactive aussi le correcteur natif si vous aviez démarré avec spellCheckEnabled: false. Les corrections s’effectuent depuis le menu contextuel du navigateur.
  • Avec un résolveur. La commande transmet le innerText du document au résolveur et ouvre le panneau Spelling. Chaque problème affiche le mot et jusqu’à six suggestions. Un clic remplace le mot et grise la ligne. Une liste vide affiche « No spelling issues found. » et un document vide « Nothing to check. »
  • Un résolveur rejeté affiche « Spell-check service error. » ; après plus de 12 secondes, « Spell-check timed out. » ; une exception affiche « Spell-check error. ».

À savoir

  • Le remplacement se fait par mot, et non par position. Une suggestion remplace la première occurrence du mot entier word dans le document (le texte dans code et pre est ignoré). offset et length ne sont pas utilisés : si un mot est mal orthographié deux fois, chaque clic corrige l’occurrence suivante depuis le début.
  • Les remplacements ne sont pas des étapes d’annulation. Dans la version 2.6.12, Undo après un clic sur une suggestion ne rétablit pas l’ancien mot.
  • Langues. Le plugin n’a pas de réglage de langue. Le correcteur natif utilise les dictionnaires du navigateur et du système ; avec un résolveur, la langue est celle vérifiée par votre service. Transmettez-la depuis votre page, par exemple fetch("/spell?lang=fr", …).
  • Votre texte est transmis à votre service. Tout le texte brut du document est envoyé au résolveur à chaque vérification. Le plugin lui-même n’envoie rien.
  • Rien n’est ajouté au HTML enregistré. L’attribut spellcheck porte sur la zone d’édition, pas sur le contenu.

Voir aussi : démonstration de correction orthographique, commandes slash.