0

为什么以下 JavaScript 在 Firefox 3.6.3 中运行时会删除FRAMESET文档中的所有元素,但使用 XPath 表达式来选择FRAMESET元素的类似脚本却没有?是document.evaluate()根本无法匹配FRAMESET元素吗?XPath 表达式中是否有错误?还有其他错误吗?

使用方法选择所有FRAMESET元素document.getElementsByTagName()(成功):

var framesets = document.getElementsByTagName('frameset');
for (var i = 0; i < framesets.length; i++) {
  framesets[i].parentNode.removeChild(framesets[i]);
}

FRAMESET使用 XPath 表达式选择所有元素(失败):

var framesets = document.evaluate("//frameset", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < framesets.length; i++) {
  framesets[i].parentNode.removeChild(framesets[i]);
}
4

1 回答 1

1

XPathResult 似乎是迭代器。它没有长度属性。

https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate

framesets.length将是未定义的。简而言之,这里是龙。

于 2010-05-09T22:51:04.410 回答