如何在firefox扩展中使用XPath提取网站信息?

时间:2010-02-06 09:27:19

标签: firefox xpath firefox-addon xul

我制作了一个firefox扩展程序,它使用xmlhttprequest加载网页。

我的扩展程序在主Firefox上打开了自己的窗口。

我的扩展的想法是在内存中加载网页,修改它并在firefox中新打开的选项卡中发布。

网页上有一个ID为“内容”的div。这就是我要修改的div。我一直在使用greaseMonkey脚本中的XPath,所以我想在我的扩展中使用它,但是,我有一个问题。它似乎不能像我想要的那样工作。我总是得到0的结果。

var pageContents = result.responseText; //webpage which was loaded via xmlhttprequest
var localDiv = document.createElement("div"); //div to keep webpage data
localDiv.innerHTML = pageContents;
// trying to evaluate and get the div i need
var rList = document.evaluate('//div[@id="content"]', localDiv, null XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

正如我所说,结果总是0。现在我创建了本地div来存储网站数据,因为我无法使用XPath解析文本。在这种情况下,document是我的扩展程序XUL文档/窗口。

我确实希望它能够奏效,但我错了。

我知道如何使用string.indexOf(str)然后slice(..)提取div。但是,这很慢并且不方便,因为我需要修改内容。更改此div中许多表单的背景,边框。对于这项工作,我没有看到比评估XPath更好的方法来获得我需要的所有节点。

所以主要的问题是,如何使用XPath来解析firefox扩展中加载的网页?

谢谢

1 个答案:

答案 0 :(得分:1)

为什么不在选项卡中加载页面,然后就像Greasemonkey那样修改它?

至于你的代码,你没有说它在哪里执行(即什么是document.location?),但假设它在XUL窗口中运行,那没有意义 - document.createElement不会创建一个HTML元素(但是没有特殊含义的XUL div元素),innerHTML不适用于这样的元素等。