0

私はFirefoxの拡張機能を作ろうとしています。document.body.innerHTML = data; を使用する理由 新しく開いたタブでは機能しません。これが私のコードです:

関数の変更() {


// Google を新しいタブで開き、選択します
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); // 必要に応じて、ここで別のエンコーディングを使用できます

let (str = {}) {
  cstream.readString(-1, str); // ファイル全体を読み取り、それを str.value に入れます
  データ = str.value;
}
cstream.close(); // これは fstream を閉じます



//ファイルの内容でGoogleページの内容を変更
document.body.innerHTML = データ;

}
4

1 に答える 1

2

コンテンツ ドキュメントを変更しようとしていますよね? あなたのコードを考えるとdocument、XULウィンドウ(またはあなたの場合はブラウザ)を指しているので、それを変更しようとしています。body存在しないため、アクセスに関するエラーが発生するはずです。( Chrome エラーが有効になっていることを確認してください。) 本当に必要なのはcontent.document.body.innerHTML.

于 2009-08-19T14:26:03.910 に答える