2009-08-18 14 views
0

Ich versuche eine Firefox-Erweiterung zu machen. Warum, wenn ich document.body.innerHTML = data verwenden möchte; Im neu geöffneten Tab funktioniert es nicht. Hier ist mein Code:google möchte nicht innerviert werden (XPCOM)

 
function change() { 


//Open google in new Tab and select it 
tab=gBrowser.addTab("http://www.google.com"); 
gBrowser.selectedTab=tab; 

//Create nslFile object 
var path="/home/foo/notify.txt" 
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); 
    file.initWithPath(path); 

//Put file content into data variable 
var data = ""; 
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(file, -1, 0, 0); 
cstream.init(fstream, "UTF-8", 0, 0); // you can use another encoding here if you wish 

let (str = {}) { 
    cstream.readString(-1, str); // read the whole file and put it in str.value 
    data = str.value; 
} 
cstream.close(); // this closes fstream 



//change content of google page by file content 
document.body.innerHTML = data; 

} 

Antwort

2

Sie versuchen, das Inhaltsdokument zu ändern, richtig? Angesichts Ihres Codes zeigt document auf das XUL-Fenster (oder den Browser in Ihrem Fall), so dass Sie versuchen, das zu ändern. Sie sollten einen Fehler beim Zugriff auf body erhalten, da es nicht existiert. (Make sure you've enabled chrome errors.) Was Sie wirklich wollen, ist content.document.body.innerHTML.