javascript - 针对 DocumentFragment 的 XPath 查询

标签 javascript debugging dom xpath documentfragment

我需要在 DocumentFragment 上做一些 DOM 手术,我正在尝试使用 XPath 查找需要修改的节点。但是,我不知道如何获得 document.evaluate处理一个片段。我试过

fragment.ownerDocument.evaluate(
    '//*',
    fragment.ownerDocument,
    null,
    XPathResult.ANY_TYPE,
    null
)

但这没有用。

最佳答案

使用 svg如果您需要针对 XML 运行 XPath,则作为临时元素,因为安全限制会阻止在未附加到 DOM 的元素上评估 XPath 表达式:

<!DOCTYPE HTML>
<html lang="en">
<head>
<title>XPath Context</title>
<meta charset="utf-8">
</head>
<body>

<svg id="model" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"">
  <?foo bar?>
</svg>

<script type="text/javascript;version=1.7">
function $xpath(aXPath, aContext)
  {
    let nodes = [];
    aContext = document.getElementById("model") || doc;
    let results = document.evaluate(aXPath, aContext, null, XPathResult.ANY_TYPE, null);
    let node;

    while ((node = results.iterateNext())) {
      nodes.push(node);
    }

    return nodes;
  }
</script>
</body>
</html>

或者使用 JavaScript 实现。

关于javascript - 针对 DocumentFragment 的 XPath 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155388/

相关文章:

javascript - HTML/JavaScript : prevent paint before code executes

javascript - 不使用普通 JavaScript 函数 'getTimezoneOffset' 获取客户端的时区?

debugging - 未知的应用程序域

javascript - 覆盖/覆盖函数内的函数

debugging - 在 Visual Studio Code 中找不到 Flutter Inspector/Toggle Debug Paint

javascript - 如何在 Firebug 中调试脚本?

javascript - 如何查找其类不包含子字符串的元素

javascript - 如何在滚动后自动更改事件菜单(菜单导航)?

javascript - 当我的搜索字段为空时,如何呈现没有结果的页面,但在搜索时仍然异步呈现?

javascript - innerText、innerHTML 和 value 之间的区别?