我想获取网页的前 n 个字符并按照它们在原始文档中的显示方式显示它们。
我想textContent
在 JavaScript 中使用来获取文本,然后以某种方式递归地获取所有没有文本的 DOM(我希望这是正确的术语)。但似乎重新组合它们将非常困难。
此外,也许有一种简单的方法可以实现这一点。那么为什么要重新发明轮子呢?
那么怎么做呢?(我不是要完整的代码,只是为了解决这个问题。)
我想获取网页的前 n 个字符并按照它们在原始文档中的显示方式显示它们。
我想textContent
在 JavaScript 中使用来获取文本,然后以某种方式递归地获取所有没有文本的 DOM(我希望这是正确的术语)。但似乎重新组合它们将非常困难。
此外,也许有一种简单的方法可以实现这一点。那么为什么要重新发明轮子呢?
那么怎么做呢?(我不是要完整的代码,只是为了解决这个问题。)
以下代码删除文档中前 35 个字符之后的所有文本。它忽略不可见的文本和完全由空格组成的文本节点。你可以在这里看到它的演示:
var limit = 35;
var current = 0;
function recurse(element) {
if (element.childNodes.length > 0) {
for (var i = 0; i < element.childNodes.length; i++) {
recurse(element.childNodes[i]);
}
}
if (element.nodeType == Node.TEXT_NODE && element.nodeValue.trim() != '' && window.getComputedStyle(element.parentElement).height != "auto") {
var length = element.nodeValue.length;
if (current < limit) {
if(current + length > limit){
element.nodeValue = element.nodeValue.substr(0, limit - current)
}
current += length;
} else {
element.nodeValue = "";
}
}
}
var html = document.getElementsByTagName('html')[0];
recurse(html);