2009-08-18 7 views
0

J'essaie de faire une extension firefox. Pourquoi quand je veux utiliser document.body.innerHTML = data; dans un nouvel onglet ouvert, cela ne fonctionne pas. Voici mon code:google ne veut pas être inné (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; 

} 

Répondre

2

Vous essayez de modifier le document de contenu, non? Compte tenu de votre code, document pointe vers la fenêtre XUL (ou le navigateur dans votre cas), donc vous essayez de changer cela. Vous devriez obtenir une erreur à propos de l'accès body car il n'existera pas. (Make sure you've enabled chrome errors.) Ce que vous voulez vraiment, c'est content.document.body.innerHTML.

Questions connexes