8
votes

Existe-t-il un moyen d'obtenir tout le texte de la page rendue avec JS?

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.

Pour clarifier, je ne veux pas attraper du texte à partir d'une sélection, je veux la page entière.

Merci!


1 commentaires

3 Réponses :


4
votes

Je suppose que vous pouviez faire quelque chose comme ça, si cela ne vous dérange pas de charger jQuery. xxx

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é.


4 commentaires

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 sur l'élément de type Ceci 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é".



21
votes

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


0 commentaires

1
votes

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;

}


0 commentaires