ここから本文です

JavaScriptでのページのテキスト全体の取得

hou********さん

2008/9/2614:03:17

JavaScriptでのページのテキスト全体の取得

Javascriptでページ全体のテキストを取得して、ある文字列がページ内に何回含まれているか表示する、というスクリプトを作りたいのですが、ページ全体のテキストを取得するにはどうすればよいのでしょうか?

閲覧数:
1,748
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

kup********さん

2008/9/2615:26:53

自分も以前、全てのテキストノードの取得を試みたんですけど、
子要素を再帰的に辿っていく感じでなかなか一筋縄では
いかなくて大変だったんですけど、以前、どこかで見つけた
サンプルを持ってるんで、それをもとに作ってみました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>sample</title>
<script type="text/javascript">
function test() {
var cnt = 0;
var ptn = document.getElementById('kwd').value;
var re = new RegExp(ptn, 'g')
for (var n = document.getElementsByTagName('BODY')[0]; n;) {
if (n.nodeType == 3) {
var s = n.nodeValue; var t = s.replace(re, '');
var u = s.length - t.length;
if (u > 0) cnt = cnt + (u / ptn.length);
}
if (n.firstChild) { n = n.firstChild; continue; }
do if (n.nextSibling) { n = n.nextSibling; break; } while (n = n.parentNode);
}
alert(cnt);
}
</script>
</head>
<body>
<form id="SAMP" action="#">
<input type="text" value="" id="kwd">
<input type="button" value="検索" onclick="test();">
</form>
<p>hogehoge</p>
<p>fugafuga</p>
<p>piyopiyo</p>
<p>hogeで検索すると</p>
<p>3回になるはずですよ!</p>
</body>
</html>

BODY要素に含まれる子要素を総当りしていく方法です。
一つ一つみていくんで、ページしだいでは激遅の可能性もありますが、
ページの要素がそれほど多くなければそれほど気には
ならないかと。

で、回数って事なんで、単純に正規表現だけでうまく
カウント出来なかったんで、なんだか泥臭いやり方なってます。

ベストアンサー以外の回答

1〜1件/1件中

zen********さん

2008/9/2615:04:04

ソースそのものでしたら、document.innerHTMLかな。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる