0

我将它用作我的语言翻译 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 代码。

4

1 回答 1

0

不太确定您发布的函数是从哪里调用的(您如何使用它)。不过,请查看这个问题,它会执行您想要的操作。关键是:

nodeType == 3

这就是您检查 DOM 节点是否为文本节点的方式。除此之外,您可能必须专门处理脚本标签,但您可以:

:not(script)

在你的 jquery 选择器中摆脱它们

于 2011-03-01T22:32:41.010 回答