Ich habe einen Javascript Code und würde den gerne in meine Erweiterung einbinden. Jetzt habe ich den einfach in meine Xul Datei mit reingeschrieben, aber das ist wohl falsch.. :cry:
Javascript in einer Erweiterung
-
Avalon -
23. November 2006 um 11:58 -
Erledigt
-
-
-
kommt das also nur in die XUL datei? oder muss ich das auch in der manifest datei vermerken?
-
-
XML
Alles anzeigen<?xml version="1.0"?> <?xml-stylesheet type="text/css" href"chrome://global/skin/" ?> <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" title="Menubar"> <menubar id="main-menubar"> <menu label="Die-Ewigen"> <menupopup> <menu label="Logins"> <menupopup> <menuitem label="sDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://sde.maedhros.com/server01/index.php')"/> <menuitem label="xDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://xde.maedhros.com/server01/index.php')"/> <menuitem label="tDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://dedv.maedhros.com/')"/> <menuitem label="rDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://xde.maedhros.com/server03/index.php')"/> </menupopup> </menu> <menu label="Sonstige"> <menupopup> <menuitem label="Wiki" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://incendi.xx-i-xx.de/de-wiki/')"/> <menuitem label="Infoseite" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://info.die-ewigen.com/')"/> <menuitem label="Forum" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://forum.die-ewigen.com/')"/> <menuitem label="Hilfe" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://hilfe.die-ewigen.com/')"/> <menuitem label="FAQ" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://faq.die-ewigen.com/')"/> <menuitem label="Portal" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://portal.die-ewigen.com/')"/> <menuitem label="Serverliste" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://die-ewigen.com/c_login.php')"/> <menuitem label="SkinCentral" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://de-skincentral.de.vu/')"/> </menupopup> </menu> </menupopup> </menu> </menubar> </window> <script type="application/x-javascript" src="chrome://chrome/chromeFiles/content/login.js" />
Dann gibt dir mir aber nen Fehler aus
-
XML
Alles anzeigen<?xml version="1.0"?> <?xml-stylesheet type="text/css" href"chrome://global/skin/" ?> <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <menubar id="main-menubar"> <menu label="Die-Ewigen"> <menupopup> <menu label="Logins"> <menupopup> <menuitem label="sDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://sde.maedhros.com/server01/index.php')"/> <menuitem label="xDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://xde.maedhros.com/server01/index.php')"/> <menuitem label="tDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://dedv.maedhros.com/')"/> <menuitem label="rDE" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://xde.maedhros.com/server03/index.php')"/> </menupopup> </menu> <menu label="Sonstige"> <menupopup> <menuitem label="Wiki" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://incendi.xx-i-xx.de/de-wiki/')"/> <menuitem label="Infoseite" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://info.die-ewigen.com/')"/> <menuitem label="Forum" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://forum.die-ewigen.com/')"/> <menuitem label="Hilfe" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://hilfe.die-ewigen.com/')"/> <menuitem label="FAQ" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://faq.die-ewigen.com/')"/> <menuitem label="Portal" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://portal.die-ewigen.com/')"/> <menuitem label="Serverliste" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://die-ewigen.com/c_login.php')"/> <menuitem label="SkinCentral" type="radio" name="radio" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://de-skincentral.de.vu/')"/> </menupopup> </menu> </menupopup> </menu> </menubar> <script type="application/x-javascript" src="chrome://chrome/chromeFiles/content/login.js" /> </overlay>
-
Danke!
Bekomme nun keine Fehlermeldung mehr. Nun möchte ich wissen, wie ich mit Javascript in eine Loginform etwas einfüge.
Danke schonmal im Voraus.
-
so langsam kommt es mir so vor, als wolltest du eigentlich eine Erweiterung geschrieben bekommen, statt selbst eine zu schreiben...
-
Nein so ist es eigentlich nicht. Ich brauche einfach nur Hilfe!
Ich gucke ja selber schon ob ich was herausfinde.
So habe nun was herausgefunden:
Das steht nun in meinm login.js, aber es passiert leider nix
Code
Alles anzeigenvar nickname="", passwd="test"; function Login() { if (document.title = "Die Ewigen - Login") { document.forms["loginform"].nic.value = passwd; } }
Seite ist http://sde.maedhros.com/server01/
-
Nun geht das Javascript auch.
Code
Alles anzeigenfunction Login() { if (document.readyState=="interactive" || document.readyState=="complete") { alert("...test1..."); if (document.title = "Die Ewigen - Login") { alert("...test2..."); document.loginform.nic.value = nickname; } } }
Wie kann ich die function jetzt aufrufen?
Den sie soll ja erst gehen, wenn die Seite: http://sde.maedhros.com/server01/index.php geladen wurdeXul-Datei:
XML
Alles anzeigen<?xml version="1.0"?> <?xml-stylesheet type="text/css" href"chrome://global/skin/" ?> <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <menubar id="main-menubar"> <menu label="Die-Ewigen" accesskey="E"> <menupopup> <menu label="Logins"> <menupopup> <menuitem label="sDE" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://sde.maedhros.com/server01/index.php')"/> <menuitem label="xDE" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://xde.maedhros.com/server01/index.php')"/> <menuitem label="tDE" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://dedv.maedhros.com/')"/> <menuitem label="rDE" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://xde.maedhros.com/server03/index.php')"/> </menupopup> </menu> <menu label="Sonstige"> <menupopup> <menuitem label="Wiki" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://incendi.xx-i-xx.de/de-wiki/')"/> <menuitem label="Infoseite" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://info.die-ewigen.com/')"/> <menuitem label="Forum" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://forum.die-ewigen.com/')"/> <menuitem label="Hilfe" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://hilfe.die-ewigen.com/')"/> <menuitem label="FAQ" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://faq.die-ewigen.com/')"/> <menuitem label="Portal" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://portal.die-ewigen.com/')"/> <menuitem label="Serverliste" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://die-ewigen.com/c_login.php')"/> <menuitem label="SkinCentral" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://de-skincentral.de.vu/')"/> </menupopup> </menu> </menupopup> </menu> </menubar> <script type="application/x-javascript" src="login.js" /> </overlay>
-
Nun, erst einmal zeigt window auf das Browserfenster, nicht auf das Inhaltsfenster, dass du dir wie einen Frame vorstellen kannst. Das bekommst du mit content. Genauso ist das document, dass du suchst mit content.document erreichbar.
Zweitens ist readyState IE-Quirks, den du im Firefox nicht finden wirst.
Drittens kannst du dein (korrigiertes) Script so oder so beim Laden einer Seite ausführen. -
wie kommst du den jetzt auf window?
ich habe das doch nirgends stehen!Code
Alles anzeigenalert("Javascript geht"); var nickname="test", passwd="test"; alert("...test11..."); if (content.document.title = "Die Ewigen - Login") { alert("...test22..."); content.document.loginform.nic.value = nickname; } function Login() { alert("...test1..."); if (content.document.title = "Die Ewigen - Login") { alert("...test2..."); content.document.loginform.nic.value = nickname; } }
Wenn ich das Beispiel nehme, was du herausgesucht hast dann kommt:
in die XUL und das:
Code
Alles anzeigenvar myExtension = { init: function() { var appcontent = document.getElementById("appcontent"); // browser if(appcontent) appcontent.addEventListener("load", this.onPageLoad, true); var messagepane = document.getElementById("messagepane"); // mail if(messagepane) messagepane.addEventListener("load", this.onPageLoad, true); }, onPageLoad: function(aEvent) { var doc = aEvent.originalTarget; // doc is document that triggered "onload" event // do something with the loaded page. // doc.location is a Location object (see below for a link). // You can use it to make your code executed on certain pages only. if(doc.location.href.search("forum") > -1) alert("a forum page is loaded"); } }
in die JS-Datei?Und das window durch content ersetzten. Sehe ich das so richtig?[/quote]
-
Zitat von Avalon
wie kommst du den jetzt auf window?
ich habe das doch nirgends stehen!alert und document sind dem window-Objekt untergeordnet.
Zitat von AvalonUnd das window durch content ersetzten. Sehe ich das so richtig?
Der Code von MozillaZine ist schon richtig. window und document usw. in deinem alten Code haben aber halt auf das falsche Fenster und Dokument gezeigt.
Außerdem solltest du myExtension natürlich durch den Namen deiner Erweiterung ersetzen...
-
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 doc = aEvent.originalTarget, nickname="test", passwd="test"; alert("...test2..."); document.loginform.nic.value = nickname; } }
Also das ist nun mein Code in der JS-Datei. Wenn eine Seite fertig geladen ist macht er immer schön ein alert. Aber er füllt leider das Loginteil nicht aus
Habe schon mit:
Codedocument.loginform.nic.value = nickname; doc.loginform.nic.value = nickname; content.document.loginform.nic.value = nickname;
probiert, aber leider ohne Erfolg.
-
oder:du solltest aber auch noch überprüfen, ob das überhaupt die richtige Seite ist. (Außerdem kann man sowas auch dem Firefox-Passwort-Manager überlassen.)
-
super, danke, soweit funktioniert alles!
Es soll ja mehr machen, als nur ein Passwortmanager.
Jetzt will ich die Logindaten aus einer Datei lesen. Das kann ich mit normalem Javascript oder muss ich da auch was beachten? -
So nun habe ich eine xml Datei:
XML
Alles anzeigen<?xml version="1.0"?> <LoginDaten> <sDE> <Username>test</Username> <Passwort>123456</Passwort> </sDE> <xDE> <Username>test</Username> <Passwort>123456</Passwort> </xDE> </LoginDaten>
Meine JS-Datei:
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 doc = aEvent.originalTarget, user="test", pw="test", xmlDoc=document.implementation.createDocument("", "doc", null); xmlDoc.load("daten.xml"); user=xmlDoc.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Username').item(0).firstChild.nodeValue; pw=xmlDoc.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Passwort').item(0).firstChild.nodeValue; doc.forms.namedItem("loginform").elements.namedItem("nic").value = user; doc.forms.namedItem("loginform").elements.namedItem("pass").value = pw; } }
Irgendwas stimmt nicht!
Hilfeeeeeeeeeee
-
Fehler in der JavaScript-Konsole?
-
Javascript Konsole???
Wo was?Ich habe zum testen wo der Fehler ist überall nen alert hingemacht.
Bis:
CodeonPageLoad: function(aEvent) { var doc = aEvent.originalTarget, user="test", pw="test", xmlDoc=document.implementation.createDocument("", "doc", null); xmlDoc.load("daten.xml");
dahin ist alles richtig!
Also stimmt was mit demCodeuser=xmlDoc.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Username').item(0).firstChild.nodeValue; pw=xmlDoc.getElementsByTagName('LoginDaten').item(0).getElementsByTagName('sDE').item(0).getElementsByTagName('Passwort').item(0).firstChild.nodeValue;
weil dannach das stimmt auch wieder!
-
meinst du die JavaScript Development Environment im Firefox?
Wenn ja, da sagt der mir nur:
Running...
-