【问题标题】:How to extract website information using XPath inside firefox extension?如何在 firefox 扩展中使用 XPath 提取网站信息?
【发布时间】:2010-02-09 23:53:39
【问题描述】:

我制作了一个 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 扩展中加载的网页?

谢谢

【问题讨论】:

    标签: firefox xpath firefox-addon xul


    【解决方案1】:

    为什么不将页面加载到选项卡中,然后就地修改它,就像 Greasemonkey 所做的那样?

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

    【讨论】:

    • 谢谢。我将页面加载到一个新选项卡中并获取它的文档对象,然后使用它执行所有 XPath 和修改,它运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多