为什么以下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]);
}
使用XPath表达式选择所有FRAMESET
元素(失败):
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]);
}
答案 0 :(得分:1)
似乎XPathResult是iterator-ish。它没有长度属性。
https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate
framesets.length
将是未定义的。简而言之,Here Be Dragons。