4

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

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

但这没有用。

4

1 回答 1

-2

svg如果需要针对 XML 运行 XPath,请使用 an作为临时元素,因为安全限制会阻止对未附加到 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 实现。

于 2013-11-08T10:25:15.707 回答