Je ne suis pas sûr que la meilleure chose à faire est de le faire du côté client. Je considérerais renvoyer les paragraphes au serveur pour faire le travail. Mais le travail devrait être le même dans tous les cas. Tout d'abord, prenez tout le contenu d'un paragraphe assurez-vous de l'avoir tout ce qu'il pourrait être dans quelques nœuds dans le DOM. (Read This) Ensuite, vous devrez créer un analyseur qui recherche vos caractères séparés tout en les ignorant lorsqu'ils sont dans des entités HTML.
À titre d'exemple le. dans un attribut href devrait être ignoré et non divisé. Tout en faisant l'analyse, vous pouvez garder un nombre de mots ainsi que de travailler sur les espaces. Faites de chaque phrase un objet qui contient toute la phrase et le nombre de mots. Vous pouvez donc pousser ces objets dans un tableau qui représente le paragraphe. Une fois cela fait, vous pouvez ensuite itérer dans le tableau et envelopper toute phrase dans un intervalle pour mettre en évidence avec CSS si le nombre de mots atteint votre seuil.
Le problème majeur est les balises qui peuvent être des parties de deux phrases telles que les suivantes.
I'm typing <b> in bold. NOW!</b>
ce que j'ai parlé de faire ne traite pas de cela, mais vous pourriez faire l'analyseur plus complexe pour soutenir plus tard que. Donc, un aperçu rapide de mon analyse décousue à travers tous les caractères avec une machine à états qui traite des mots de comptage et de division au bon endroit. Sur split, ajoutez les données collectées à un tableau. Une fois terminé, parcourez le tableau en sortie des phrases nouvellement enveloppées.
J'ai supposé ici que vous avez votre jQuery pour faire la mise en évidence de base? –
Si ces paragraphes ont des liens, cela ne produira pas ce que vous attendez. Et il y a maintenant moyen de gérer le code html qui couvre les phrases. Mais si les paragraphes sont simples et justes, c'est parfait. –