好的,所以我有这个简单的 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;
}
当前结果是“This is Thomas~This is Bufu”。我想要“这是Thomas~这是Bar~这是Foo~这是Bufu”。谁能告诉我出了什么问题或我该怎么办?我会感谢任何对我有帮助的答案。PS。这是一个 chrome 扩展,我需要从任何 html 页面获取所有文本,即使是一个非常复杂的页面。