我制作了一个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扩展中加载的网页?
谢谢
答案 0 :(得分:1)
为什么不在选项卡中加载页面,然后就像Greasemonkey那样修改它?
至于你的代码,你没有说它在哪里执行(即什么是document.location
?),但假设它在XUL窗口中运行,那没有意义 - document.createElement
不会创建一个HTML元素(但是没有特殊含义的XUL div元素),innerHTML
不适用于这样的元素等。