XPathResult方法和属性不起作用greasemonkey usercript

时间:2013-09-18 08:32:43

标签: javascript firefox xpath greasemonkey

我已经为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));
  }

除了第一个“我在这里”之外,在控制台上没有打印任何内容。

请帮助。请建议。

此致 马赫什。

1 个答案:

答案 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);中的路径相同,否则无论如何都会搜索整个文档。