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é. P>
Y a-t-il un moyen de forcer WebKit pour ajouter le petit chèque orthographique rouge souligne à Texareas? P>
3 Réponses :
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: 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. P> 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). p> p>
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é.
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();
Pour qu'il fonctionne de nos jours, vous devez faire: attendre attendre (0); Sélection.Modifier ('Move', 'Transférer', 'Word'); code>, où
attendre (MS) {retour Nouvelle promesse (résolution => Settimeout (résolution, ms)} code>
Une bonne réponse de Mark Fowler, voici une amélioration de celui-ci: afin que vous puissiez éviter le nombre arbitraire 1000 et il peut gérer plusieurs lignes. P> P>