Javascriptを使用してページ内のすべてのテキストを取得する(ユーザーにとって目立たない)方法はありますか?HTMLを取得したり、解析したり、すべてのタグを削除したりすることはできますが、既にレンダリングされたページからテキストを取得する方法があるかどうか疑問に思っています。
明確にするために、私は選択範囲からテキストを取得したくはありません。ページ全体が必要です。
ありがとうございました!
Javascriptを使用してページ内のすべてのテキストを取得する(ユーザーにとって目立たない)方法はありますか?HTMLを取得したり、解析したり、すべてのタグを削除したりすることはできますが、既にレンダリングされたページからテキストを取得する方法があるかどうか疑問に思っています。
明確にするために、私は選択範囲からテキストを取得したくはありません。ページ全体が必要です。
ありがとうございました!
この回答は彼のコードに基づいているため、 Greg W's answer のすべての功績ですが、インライン スタイルやスクリプト タグのないWeb サイトでは、一般的に使用する方が簡単であることがわかりました。
var theText = $('body').text();
これは、テキストを含む可能性のあるすべてのタグを手動で設定する必要なく、すべてのタグのすべてのテキストを取得するためです。
また、注意しないと、タグを手動で設定すると、出力に重複したテキストが作成される傾向があります。これは、各関数が他のタグに含まれるタグをチェックする必要があることが多く、同じテキストを 2 回取得する結果になるためです。テキストを取得するすべてのタグを含む 1 つのセレクターを使用すると、この問題を回避できます。
body タグ内にインライン スタイルまたはスクリプト タグがある場合、それらも取得されることに注意してください。
この記事innerTextを読んだ後、テキストを取得するための絶対的な最良の方法はプレーンなバニラ js だと思います。
document.body.innerText
そのままでは、これは信頼できるクロスブラウザーではありませんが、制御された環境では最良の結果が返されます。詳細については、記事をお読みください。
このメソッドは、通常より読みやすい方法でテキストをフォーマットし、出力にスタイルやスクリプト タグのコンテンツを含めません。
jQueryをロードしてもかまわないのであれば、このようなことができると思います。
var theText;
$('p,h1,h2,h3,h4,h5').each(function(){
theText += $(this).text();
});
すべてが完了すると、「theText」にはページ上のほとんどのテキストが含まれるはずです。省略した可能性のある関連するセレクターを追加します。