わかりました、この単純な HTML コードがあります
<html>
<head>
<script src="jquery.js"></script>
<script src="script.js"></script>
<title>Get all text</title>
</head>
<body>
<span>This is Thomas</span>
This is Bar
<div id="content">
This is Foo.
</div>
<span>This is Bufu</span>
</body>
</html>
そして、変数内のすべてのテキストを取得したい。だから私はこのJavaScriptコードを作りました。ただし、「This is Foo」と「This is Bar」は表示されません。
var sep = '~';
$(function() {
pageTexts = getTextFromPage();
console.log(pageTexts);
});
function getTextFromPage()
{
var pageText = '';
i = 0;
j = 0;
var itr = document.createTreeWalker(
document.getElementsByTagName("body")[0],
NodeFilter.SHOW_TEXT,
null, // no filter
false
);
while(itr.nextNode())
{
if (itr.currentNode.textContent.search("\t") && itr.currentNode.textContent.search("\n") && itr.currentNode.parentNode.nodeName.toLowerCase() != 'script' && itr.currentNode.parentNode.nodeName.toLowerCase() != 'noscript')
{
if (i == 0)
{
pageText = itr.currentNode.textContent;
i++;
}
else
{
pageText = pageText + sep + itr.currentNode.textContent;
i++;
}
}
charNumber = pageText.length;
elemNumber = i;
}
return pageText;
}
現在の結果は「トーマスです~ブフです」です。そして、「これはトーマス~これはバー~これはフー~これはブフ」でお願いしたいです。何が間違っているのか、何をすべきなのか誰か教えてもらえますか? 私に役立つ答えがあれば感謝します。PS。これはクロム拡張用であり、非常に複雑なページであっても、任意の html ページからすべてのテキストを取得する必要があります。