我需要在DocumentFragment上执行一些DOM操作,并且我正在尝试使用XPath来查找需要修改的节点。但是,我不知道如何让document.evaluate在片段上工作。我试过了
fragment.ownerDocument.evaluate(
'//*',
fragment.ownerDocument,
null,
XPathResult.ANY_TYPE,
null
)但这并不管用。
发布于 2013-11-08 18:25:16
如果需要对XML运行XPath,请使用svg作为临时元素,因为安全限制阻止对未附加到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实现。
https://stackoverflow.com/questions/18155388
复制相似问题