6
votes

Soulignant les longues phrases en utilisant jQuery

J'aimerais souligner les phrases longues (disons, 50 mots ou plus) contenues dans une gamme d'objets de paragraphe sur une page, c'est-à-dire $ ("# contenu p") . Je ne sais pas comment aborder cela.

J'ai à l'origine essayé de mettre en évidence toutes les phrases, mais a rencontré des problèmes lorsqu'ils contenaient des balises HTML (l'exemple de mise en évidence sur le net semble être réservé aux mots individuels, de sorte qu'ils ne prennent pas compte des nœuds d'enfants). Je suis conscient que la fractionnement des phrases est difficile; J'aimerais utiliser.!? suivi soit par un espace puis une lettre majuscule ou rien du tout (c'est-à-dire la fin du paragraphe).

Merci d'avance pour toute aide / conseil.


0 commentaires

4 Réponses :


2
votes

Comme vous l'avez dit, ça va être délicat d'avoir raison, étant donné que vous ne pourrez pas tous les attraper, je collerais quelque chose de simple comme: xxx

obtenir Trop intelligent et vous finirez par dépenser plus de temps de coder pour des cas de bord que je suppose que vous voudrez raisonnablement le souhaitez.


2 commentaires

J'ai supposé ici que vous avez votre jQuery à faire la mise en évidence de base?


Si ces paragraphes ont des liens, il ne produira pas ce que vous attendez. Et il y a maintenant lieu à l'avenir pour traiter le code HTML qui couvre des phrases. Mais si les paragraphes sont simples et que le texte est parfait.



0
votes

Je ne suis pas sûr que la meilleure chose à faire est de le faire du côté du client. Je envisagerais d'envoyer les paragraphes sur le serveur pour faire le travail. Mais le travail devrait être la même de toute une autre manière.

Prenez d'abord tout le contenu d'un paragraphe, assurez-vous de tout faire pour que cela puisse réaliser quelques nœuds dans le DOM. ( Lire ce ) puis vous devra faire un analyseur qui recherche vos personnages fractionnés tout en les ignorant pendant qu'ils sont dans des entités HTML. p>

comme exemple le. Dans un attribut HREF devrait être ignoré et non divisé. Tout en faisant l'analyse, vous pouvez garder un mot compte comme rupture de travail sur les espaces. Faites chaque phrase un objet qui contient la phrase entière et le nombre de mots. Vous pouvez donc pousser ces objets dans un tableau qui représente le paragraphe. Une fois que vous avez fait, vous pouvez ensuite itérer à travers le tableau et envelopper n'importe quelle phrase en une portée pour mettre en évidence avec CSS si le nombre de mots atteint votre seuil. P>

Le problème majeur est des étiquettes qui peuvent être des parties de deux phrases telles que la Suivant. P>

I'm typing <b> in bold. NOW!</b>


0 commentaires

0
votes

C'est probablement une solution plutôt lente et laid aussi, mais il devrait être assez simple à coder:

Lire tout le texte dans une chaîne, puis l'analyser, compter des caractères et trouver tous les jours.!? - Personnage. Dans la boucle d'analyse, vous recherchez également , où ". Ensuite, chaque fois que vous trouvez une.!

Lorsque le tout est fait, faites une autre boucle, cela déplace des sous-chaînes de la première chaîne dans une nouvelle chaîne, prépendiez chaque «phrase longue» avec une balise de surbrillance et ajoute une balise de surbrillance finale à la fin de avant de partir.

Lorsque vous avez terminé, mettez la nouvelle chaîne de la chaîne où vous l'avez eue de ...


0 commentaires

0
votes

Pour ce faire, vous devez obtenir le code HTML de chaque paragraphe ( nœud.html () ), puis remplacez toutes les balises HTML avec le même nombre d'espaces. Cela devrait être assez simple et car vous pouvez simplement rechercher des supports inclinés et le premier support de fermeture. Vous devez tout d'abord le faire pour éviter tout ces arrêts et mots à l'intérieur de la balise de confondre le reste de l'algorithme, mais aussi d'empêcher une étiquette elle-même comme un mot.

Split le texte basé sur un arrêt complet suivi de rien ni de quantité de blancheur pour obtenir vos phrases. Vous devez effectuer cette scission manuellement à l'aide d'une expression régulière correspondante afin que vous puissiez suivre les positions de démarrage et de fin de la phrase dans la chaîne d'origine.

Ensuite, divisez chaque phrase sur WhitSpace et supprimez tous les "mots" du tableau qui consiste simplement en espace blanche. Cela vous donne la longueur de la phrase. Si c'est sur votre limite, insérez le code HTML approprié aux positions de démarrage et de fin de la phrase de votre chaîne HTML d'origine. Vous devrez garder une trace de la quantité de HTML supplémentaire que vous avez ajoutée afin que vous puissiez trouver la bonne position de début et de fin des phrases longues ultérieures.


0 commentaires