代码之家  ›  专栏  ›  技术社区  ›  user1651105

如何在火狐扩展中使用xpath提取网站信息?

  •  2
  • user1651105  · 技术社区  · 14 年前

    我做了一个火狐扩展,它使用 xmlhttprequest .

    我的扩展插件在主Firefox旁边有自己的窗口。

    我的扩展的想法是在内存中加载一个网页,修改它,然后在火狐新打开的选项卡中发布。

    网页有一个ID为“content”的DIV。这就是我要修改的DIV。我已经在greasemonkey脚本中使用了xpath alot,所以我想在扩展中使用它,但是,我有一个问题。它看起来不像我想要的那样有效。我总是得到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(..) . 但是,这很慢而且不方便,因为我需要修改内容。更改此分区内许多表单的背景和边框。对于此作业,我没有看到比评估xpath以获取所需的所有节点更好的方法。

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

    谢谢你

    1 回复  |  直到 14 年前
        1
  •  1
  •   Nickolay    14 年前

    为什么不把页面加载到一个选项卡中,然后像greasemonkey那样在适当的位置修改它呢?

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