Y a-t-il un moyen (discrètement, à l'utilisateur) d'obtenir tout le texte d'une page avec JavaScript? Je pourrais obtenir le HTML, analyser, supprimer toutes les balises, etc., mais je me demande s'il y a un moyen d'obtenir le texte de la page rendue Alread. P>
Pour clarifier, je ne veux pas attraper du texte à partir d'une sélection, je veux la page entière. P>
Merci! P>
3 Réponses :
Je suppose que vous pouviez faire quelque chose comme ça, si cela ne vous dérange pas de charger jQuery. quand tout est terminé, "thetext" doit contenir la majeure partie du texte de la page. Ajoutez des sélecteurs pertinents que j'ai peut-être laissés de côté. P> p>
En fait, ce n'est pas une mauvaise idée du tout, je ne pense pas que j'aurai besoin d'un texte à l'extérieur de ceux-ci ... Cependant, cela ne cherchera pas aussi des liens à l'intérieur des paragraphes, etc.?
Je pense que depuis que nous utilisons la méthode text () de JQuery (), il sait de supprimer ces étiquettes supplémentaires pour nous. Si nous avions utilisé la méthode HTML (), cela porterait définitivement les étiquettes d'ancrage.
Vous pouvez commutateur code> sur l'élément de type
Ceci code> est à l'intérieur de chaque () et choisissez comment gérer son contenu (la valeur d'une liste déroulante, l'innerhtml d'une ancre / paragraphe / etc.) ... Vous pourriez avoir une jolie fantaisie si vous le souhaitez.
Le but est de s'appuyer sur le rendu du navigateur pour obtenir le texte, cependant, de ne pas le faire du HTML ... quelque chose comme "Sélectionnez tout texte, obtenez le texte sélectionné".
Tout crédit à Réponse de Greg w , comme je basais sur cette réponse sur son code, mais j'ai trouvé que pour un site Web sans style intégré ni tags de script em> Il était généralement plus simple d'utiliser: document.body.innerText
comme une amélioration de la réponse de Greg w, vous pouvez également supprimer «indéfini», et supprimer des nombres, en considérant qu'ils ne sont pas les mots.
function countWords() { var collectedText; $('p,h1,h2,h3,h4,h5').each(function(index, element){ collectedText += element.innerText + " "; }); // Remove 'undefined if there' collectedText = collectedText.replace('undefined', ''); // Remove numbers, they're not words collectedText = collectedText.replace(/[0-9]/g, ''); // Get console.log("You have " + collectedText.split(' ').length + " in your document."); return collectedText; }
Dupliqué possible: Stackoverflow.com/questions/1879477 / ...