Web ページ上のすべてのテキストをカウントアップし、結果を絶対位置の div に表示するブックマークレットを作成したいと考えています。
私が行ったすべてのGoogle検索は、フォームまたはテキスト領域または既知のdiv ID内の単語の総数を数えることについて話しています。それは私が欲しいものではありません。各 /w が Web ページ全体に表示される回数が必要です。
私はこれを行う方法がわからないことを知るのに十分なJavaScriptを知っています。
Web ページ上のすべてのテキストをカウントアップし、結果を絶対位置の div に表示するブックマークレットを作成したいと考えています。
私が行ったすべてのGoogle検索は、フォームまたはテキスト領域または既知のdiv ID内の単語の総数を数えることについて話しています。それは私が欲しいものではありません。各 /w が Web ページ全体に表示される回数が必要です。
私はこれを行う方法がわからないことを知るのに十分なJavaScriptを知っています。
このようなものが動作するはずです:
function countWordFrequency() {
var freq={};
// Traverse the DOM looking for text nodes.
recurseTextNodes(function(textNode) {
// Split the text into words, removing punctuation.
var words = textNode.data.replace(/[^\w\s]/g, '').split(/\s+/)
, len = words.length;
// Count the word frequency.
for (var i=0; i<len; i++) {
// if (freq[words[i]]) { bug if one of the words is "constructor"!
if (typeof freq[words[i]] === 'number') {
freq[words[i]] += 1;
} else {
freq[words[i]] = 1;
}
}
});
return freq;
}
このソリューションは、句読点を削除して単語を解析するという点で単純すぎるかもしれませんが、アイデアを示す必要があります。また、recurseTextNodes
関数は読者への演習として残されています =)。このルーチンをブックマークレットとして保存する方法 (特にエンドユーザーに結果を表示する方法) にも影響がありますが、繰り返しますが、その方法についてある程度理解していることを前提としています。