【发布时间】:2011-03-01 22:24:32
【问题描述】:
我在我的语言翻译 jquery 脚本中使用它作为众多部分之一。
当我遍历网页上的所有节点时,这部分抓取了节点的文本。
不过,它也将许多隐藏的 javascript 作为文本节点抓取。
那么有没有办法修改它,只获取 html 端?还要修剪不需要的空格?
这是原始代码。
var content = function (node, txt) {
if (txt) {
if (node.textContent) {
node.textContent = txt;
} else if (node.nodeValue) {
node.nodeValue = txt;
}
} else {
return node.textContent ? node.textContent : node.nodeValue;
}
};
这里将帮助显示这段代码的上下文。
// recursive tree walker
(function (parent) {
var childs = parent.childNodes;
// if childs object has data
if (childs && childs.length) {
var i = childs.length; while (i--) {
// assign node variable to childs object
node = childs[i];
// text node found, do the replacement
if (node.nodeType == 3) {
// assign the current value to a variable
var value = content(node);
} else {
arguments.callee(node);
}
}
}
})(document.body);
所有这些都是我的语言翻译代码工作的逻辑,我只是想调整输入以便它抓取文本,但没有页面源中的 javascript 代码。
【问题讨论】:
-
你能发布一些你正在使用的 HTML 吗?
-
我正在遍历页面上的每个文本节点,并使用上面的代码来获取该文本节点的值。但是当我查看结果时,它也会抓取页面上的任何 javascript 代码,我想跳过那部分。