我已经为Firefox安装了greasemonkey插件(我的FF版本是21.0)。我写了一个名为mahesh.user.js的用户脚本
var links = document.evaluate("//span", document.body, null, 6, null);
现在我打印以下内容
console.log(links);
Firebug调试器写出XPathResult对象。但我无法使用任何XPathResult属性,如snapshotLength或方法,如iterateNext()或 snapshotItem()。如果我这样做,就不会在控制台上打印任何内容。
即
var thisLink = links.iterateNext();
console.log("I am here -- 111: " + thisLink);
i = 0;
while(thisLink) {
console.log("thisLink #" + (++i));
}
除了第一个“我在这里”之外,在控制台上没有打印任何内容。
请帮助。请建议。
此致 马赫什。
答案 0 :(得分:1)
如果您使用结果类型6
,那么您无法进行迭代,但您应该能够按如下方式访问项目:
for (var i = 0, l = links.snapshotLength; i < l; i++)
{
var span = links.snapshotItem(i);
}
如果该循环不产生任何结果,那么可能是因为XPath没有找到任何节点。原因可能是输入文档中的命名空间。
另一方面,如果您只想查找所有span
元素,那么执行document.getElementsByTagName('span')
就足够了,不需要XPath。
对于您的document.evaluate("//span", document.body, null, 6, null);
来电,如果您将第二个项目设为与文档本身不同的节点,则您的路径应该与document.evaluate(".//span", document.body, null, 6, null);
中的路径相同,否则无论如何都会搜索整个文档。