8
votes

Forcer la vérification orthographique sur un textarea en webkit

Je crée une application de saisie QC / Données basée sur le navigateur qui permettra aux gens de modifier les fichiers OCRED, qui ont naturellement des tonnes d'erreurs. Les morceaux de données sont placés dans textase afin qu'ils puissent être vérifiés, mais les soulignements rouges n'apparaissent que lorsque l'utilisateur met manuellement le curseur dans un mot mal orthographié.

Y a-t-il un moyen de forcer WebKit pour ajouter le petit chèque orthographique rouge souligne à Texareas?


0 commentaires

3 Réponses :


2
votes

Je n'ai aucune idée si cela fonctionnera ou non, mais vous voudrez peut-être essayer de jouer avec la sélection. En d'autres termes, une fois que vous avez mis à jour votre Texarea (et que vous souhaitez "rafraîchir" pour effectuer le montrent de soulignement rouge), vous pourrez peut-être faire quelque chose comme: XXX

Vous pouvez trouver un peu Plus sur la manière d'utiliser des sélections ici: Comment puis-je sélectionner un texte arbitraire sur la page en utilisant JavaScript? ou via une recherche Google.

Ma pensée est que la création d'une sélection (ou peut-être l'effacement après que vous l'avez créée) pourrait déclencher un événement de navigateur différent qui provoque une actualisation des orthographiques ... Mais c'est juste une idée; Cela pourrait faire la même chose exacte que le réglage de Texarea.Value (c'est-à-dire rien).


3 commentaires

C'est une bonne idée. Je pensais aussi à exécuter le curseur à travers chaque mot textarea par mot, mais cela prendra probablement suffisamment de temps pour gêner l'utilisateur.


Laissez-moi savoir si cela fonctionne ou non; Maintenant tu m'as curieux :-)


Je posterai si j'essaie, mais c'est une petite partie d'un projet précipité.



11
votes

Essentiellement, vous devez utiliser l'API de sélection pour déplacer le point d'insertion sur chaque mot pour obtenir Safari pour la mettre en surbrillance. Voici un exemple de numérisation sur les premiers mille mots ...

textarea = document.getElementById("mytextarea");
textarea.focus();

var selection = window.getSelection();
selection.modify("move", "backward", "line");
for (var i = 0; i < 1000; i++ ) {
    selection.modify("move", "forward", "word");
}

// Remove focus from the element, since the word under
// the cursor won't have a misspelling marker.
textarea.blur();


1 commentaires

Pour qu'il fonctionne de nos jours, vous devez faire: attendre attendre (0); Sélection.Modifier ('Move', 'Transférer', 'Word'); , où attendre (MS) {retour Nouvelle promesse (résolution => Settimeout (résolution, ms)}



2
votes

Une bonne réponse de Mark Fowler, voici une amélioration de celui-ci: xxx

afin que vous puissiez éviter le nombre arbitraire 1000 et il peut gérer plusieurs lignes.


0 commentaires