0

我正在尝试制作一个Firefox扩展。为什么当我想使用 document.body.innerHTML = data; 在新打开的选项卡中,它不起作用。这是我的代码:

函数变化(){


//在新标签中打开谷歌并选择它
tab=gBrowser.addTab("http://www.google.com");
gBrowser.selectedTab=标签;

//创建nslFile对象
var path="/home/foo/notify.txt"
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(路径);

//将文件内容放入数据变量
变量数据 = "";
var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"]。
                        createInstance(Components.interfaces.nsIFileInputStream);
var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"]。
                        createInstance(Components.interfaces.nsIConverterInputStream);
fstream.init(文件, -1, 0, 0);
cstream.init(fstream, "UTF-8", 0, 0); // 如果你愿意,你可以在这里使用另一种编码

让(str = {}){
  cstream.readString(-1, str); // 读取整个文件并将其放入 str.value
  数据 = str.value;
}
cstream.close(); // 这会关闭 fstream



//通过文件内容改变谷歌页面的内容
document.body.innerHTML = 数据;

}
4

1 回答 1

2

您正在尝试更改内容文档,对吗?给定您的代码,document指向 XUL 窗口(或您的情况下的浏览器),因此您正在尝试更改它。您应该在访问body它时遇到错误,因为它不存在。(确保您已启用 chrome 错误。)您真正想要的是content.document.body.innerHTML.

于 2009-08-19T14:26:03.910 回答