【问题标题】:How to get the html of a text node in jquery?如何在jquery中获取文本节点的html?
【发布时间】: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 吗?
  • 您使用的是.text() 还是.html()?您应该使用前者;我希望省略<script> 标签。
  • 我正在遍历页面上的每个文本节点,并使用上面的代码来获取该文本节点的值。但是当我查看结果时,它也会抓取页面上的任何 javascript 代码,我想跳过那部分。

标签: jquery textnode


【解决方案1】:

不太确定您发布的函数是从哪里调用的(您是如何使用它的)。结帐this question 虽然,它做的事情就像你想要的。关键是:

nodeType == 3

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

:not(script)

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

【讨论】:

  • +1 用于:not(script) 建议,但-0.5 用于懒惰的回答。
  • 很抱歉你发现它很懒惰,我发现如果没有更多的 HTML 和原始用户发布的脚本,我很难做到更完整/具体。这当然不是我的本意。
  • 我该如何应用这个?我无法更改我的选择器,我可以更改获取文本的方式,或者尝试从结果中删除 javascript。
  • 您可以在事后测试 jquery 节点。如果您想确定一个节点是否不是脚本节点,您可以使用if (!node.is("script"))。或者,您可以使用过滤器,这会提高性能,因为您可以将其应用于整个节点集。为此,nodes = nodes.filter(":not(script)");。我真的建议不要尝试正则表达式解析 javascript 或类似的东西。这将比您想象的要困难,并且可能非常容易出错。
猜你喜欢
  • 2023-03-10
  • 2011-02-22
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多