gehe auf about:config und stelle die Einstellungen javascript.options.showInConsole und javascript.options.strict auf true. Dann gehe in's Menü Extras -> JavaScript-Konsole und sorge dafür, dass dein Code zur Ausführung kommt. Dann wird dir da dein Fehler mit einer Beschreibung angezeigt.
Javascript in einer Erweiterung
-
Avalon -
23. November 2006 um 11:58 -
Erledigt
-
-
So, habe die Einstellungen umgestellt!
Habe keine Javascript-Konsole im Menü Extras!
-
öffnet sich ein Fenster wenn du in die Adressleiste "javascript:" eintippst und enter drückst?
-
Möglicherweise heißt der Menü-Eintrag auch "Fehler-Konsole".
-
hier zu Hause heisst es Java Script Konsole, auf der Arbeit war es die Fehler Konsole!
CodeFehler: Kein Element gefunden Quelldatei: jar:file:///C:/Programme/Mozilla%20Firefox/chrome/browser.jar!/content/browser/daten.xml Zeile: 1, Spalte: 1 Quelltext: ^
Da haben wir den Fehler
Blos was heisst das jetzt?
-
das heißt dann wohl, dass er die Datei am falschen Ort sucht. Ich denke mal, du willst die Datei im Profilordner speichern. Das müsstest du dann so machen:
Code
Alles anzeigenvar file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("meinedatei.xml"); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var fileHandler = ios.getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler); var URL = fileHandler.getURLSpecFromFile(file); // in URL ist jetzt eine file:/// uri zur Datei
-
bevor ich jetzt weitermache ne Frage.
Ist es möglich im laufenden Betrieb von FF Daten im Profilordner zu speichern?
Und zwar unabhängig ob es Windows oder Linux ist? -
Dateien anlegen, bearbeiten und löschen sollte zu jeder Zeit möglich sein.
-
dann ist gut!
Habe nämlich gehört das man im Profilordner nicht so ohne weiteres Speichern kann, schon garnicht in Linux.Danke Dr.Evil, werde ich gleich nach dem einkaufen mal ausprobieren!
-
den Profilordner gibt es ja gerade aus dem Grund, dass da Schreibrechte vorhanden sind.
-
Code
Alles anzeigenwindow.addEventListener("load", function() { Login.init(); }, false); var Login = { init: function() { var appcontent = document.getElementById("appcontent"); if(appcontent) appcontent.addEventListener("load", this.onPageLoad, true); }, var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("daten.xml"); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var fileHandler = ios.getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler); var URL = fileHandler.getURLSpecFromFile(file); onPageLoad: function(aEvent) { alert("test1"); user=URL.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Username').item(0).firstChild.nodeValue.Text; alert("test2"); user=URL.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Passwort').item(0).firstChild.nodeValue.Text; alert("test3"); alert(user); alert(pw); doc.forms.namedItem("loginform").elements.namedItem("nic").value = user; doc.forms.namedItem("loginform").elements.namedItem("pass").value = pw; } }
Fehler: missing : after property id
Quelldatei: chrome://test/content/login.js
Zeile: 10, Spalte: 4
Quelltext:
var file = Components.classes["@http://mozilla.org/file/directory_service;1"] -
Code
Alles anzeigenwindow.addEventListener("load", function() { Login.init(); }, false); var Login = { init: function() { var appcontent = document.getElementById("appcontent"); if(appcontent) appcontent.addEventListener("load", this.onPageLoad, true); }, onPageLoad: function(aEvent) { var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("daten.xml"); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var fileHandler = ios.getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler); var URL = fileHandler.getURLSpecFromFile(file); var doc = aEvent.originalTarget, user="test", pw="test", xmlDoc=document.implementation.createDocument("", "", null); xmlDoc.load(URL); alert("test1"); user=URL.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Username').item(0).firstChild.nodeValue.Text; alert("test2"); user=URL.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Passwort').item(0).firstChild.nodeValue.Text; alert("test3"); alert(user); alert(pw); doc.forms.namedItem("loginform").elements.namedItem("nic").value = user; doc.forms.namedItem("loginform").elements.namedItem("pass").value = pw; } }
-
Ich musste zwar was suchen bis ich den Unterschied gefunden habe, aber nun habe ich es.
Leider hat er immernoch ne Fehlermeldung:
CodeFehler: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIDOMXMLDocument.load]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: chrome://test/content/login.js :: anonymous :: line 24" data: no] Quelldatei: chrome://test/content/login.js Zeile: 24
Bei Zeile 24 handel es sich darum:
-
-
Sorry, da habe ich nicht genau aufgepasst...
Code
Alles anzeigenwindow.addEventListener("load", function() { Login.init(); }, false); var Login = { init: function() { var appcontent = document.getElementById("appcontent"); if(appcontent) appcontent.addEventListener("load", this.onPageLoad, true); }, onPageLoad: function(aEvent) { var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("daten.xml"); var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var fileHandler = ios.getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler); var URL = fileHandler.getURLSpecFromFile(file); var doc = aEvent.originalTarget, user="test", pw="test", xmlDoc=document.implementation.createDocument("", "", null); xmlDoc.load(URL); alert("test1"); user=xmlDoc.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Username').item(0).firstChild.nodeValue.Text; alert("test2"); user=xmlDoc.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Passwort').item(0).firstChild.nodeValue.Text; alert("test3"); alert(user); alert(pw); doc.forms.namedItem("loginform").elements.namedItem("nic").value = user; doc.forms.namedItem("loginform").elements.namedItem("pass").value = pw; } }
-
Code
Fehler: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIDOMXMLDocument.load]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: chrome://test/content/login.js :: anonymous :: line 23" data: no] Quelldatei: chrome://test/content/login.js Zeile: 23
Zeile 23 ist:
hm...??? -
Er findet die Datei nicht...
-
Die liegt im gleichen Ordner wie die JS-Datei
Struktur von AvA-B.xpi
chrome ---> chromeFIles ---> content ---> login.js, daten.xml, AvA-B.xul
chrome.manifest
install.rdf -
???
Dr. Evil weisst du da keine Lösung?
-
oder sonstwer?
-