XUL: persistente Daten
Jan L.
- xml-derivat
Hallo allerseits,
Ich beschäftige mich seit zwei Abenden mit Mozilla-Extensions, d.h.
mit XUL und dem Mozilla-DOM, und habe es jetzt auch geschafft erste,
einfache Extensions zum Laufen zu bekommen.
Die erste Funktion, die ich in meiner Extension implementiert habe,
dient dazu, bestimmte Elemente auf einer Seite auszublenden. Das
funktioniert auch soweit schon gut. Der betreffende Menüpunk ist als
'checkbox' deklariert und das Häkchen davor taucht also auch schon
auf.
Ich weiß leider nicht, wie ich diese Eistellung beibehalte, was aber
schon so sein müsste, da ich ja nicht auf jeder neuen Seite den
Menüpunkt wieder auswählen will (sonst könnte ich ja gleich ein
Bookmarklet verwenden).
Auf xulplanet.com habe ich jetzt unter
http://xulplanet.com/tutorials/xultu/persist.html das Attribut
"persit" gefunden. Wenn ich die Beschreibung dort richtig verstehe,
kann man damit ja alles mögliche speichern. Das Testen mit "alte
Extension deinstallieren -> Browser schließen -> irgendwas versuchen
-> neue Extension packen -> Browser starten -> neue Extension
installieren -> Browser neu starten -> Testen ... usw" ist allerdings
ziemlich lästig.
Weiß jemand von euch wie man die Einstellung für einen Menüpunkt der
in der Form
<menuitem id="hide-closed" label="gesperrte Threads ausblenden"
oncommand="hide_closed();" type="checkbox" persist="???"/>
speichern kann?
Gruß, Jan
Hi,
Ich weiß leider nicht, wie ich diese Eistellung beibehalte,
dabei kann Dir Dein Hausarzt helfen. SCNR ;-)
da ich ja nicht auf jeder neuen Seite den
Menüpunkt wieder auswählen will
Sprich: Du möchtest nicht jedes Mal die selbe manuelle, wohl aber die selbe Funktion ausführen.
Auf xulplanet.com habe ich jetzt unter
http://xulplanet.com/tutorials/xultu/persist.html das Attribut
"persit" gefunden.
Mit Persistenz hat Dein Problem nichts zu tun: Du möchtest nichts beibehalten, sondern in einem "frischen" Kontext automatisiert etwas ausführen. Also onload jeder Seite. Das persist-Attribut dient dazu, _innerhalb der Extension_ Attributwerte auch browsersessionübergreifend beizubehalten.
Wenn ich die Beschreibung dort richtig verstehe,
kann man damit ja alles mögliche speichern.
Nur Attributwerte.
Weiß jemand von euch wie man die Einstellung für einen Menüpunkt der
in der Form [...] speichern kann?
Gar nicht. Du musst Dir zunächst irgendwie merken, _dass_ die Funktion ausgeführt werden soll, und dann den geeigneten Zeitpunkt erwischen, dies zu tun (sprich: Dich an ein geeignetes Event anhängen). Tipp: Schau Dir den Code der Webdeveloper Toolbar an.
Cheatah
Hallo,
Danke für deine Antwort. Jetzt habe ich wenigstens mal einen Ansatz
und weiß, daß ich bei 'persist' in dem Zusammenhang nicht weitersuchen
muß.
Gar nicht. Du musst Dir zunächst irgendwie merken, _dass_ die Funktion ausgeführt werden soll,
OK, das ist ja kein Problem. Ich kann ja den Zustand einfach in einer
boolschen Variable speichern.
und dann den geeigneten Zeitpunkt erwischen, dies zu tun (sprich: Dich an ein geeignetes Event anhängen).
Da habe ich noch ein Problem. Ich habe jetzt so was versucht wie:
var hide_closed = false;
function init() {
alert('test');
if (hide_closed) hideClosed();
}
[...]
window._content.onload = init; //hat nicht funktioniert
window.onload = init; //das auch nicht
Die Variable hide_closed hat jeweils schon den richtigen Zustand
(getestet), die Funktion init() wird aber beim erneuten Laden der
Seite nicht aufgerufen.
Tipp: Schau Dir den Code der Webdeveloper Toolbar an.
Mhmm. Die Idee hatte ich auch schon. Ich wollte aber erst mal hier
fragen, bevor ich mich da durchwühlen muß.
Gruß, Jan
Hallo,
Ich hab das Problem jetzt doch gelöst bekommen. Ob das die ideale
Methode ist, weiß ich nicht, es funktioniert aber zumindest schon mal.
Für alle, die es interessiert: statt 'window._content.onload' oder
'window.onload', benutze ich jetzt folgendes
[...]
function starter() {
window._content.addEventListener('load',init,true);
}
window.addEventListener('load',starter,true);
Cheatah, deine Hilfe war zwar recht abstrakt, hat mich aber dennoch zum
Ziel geführt. Danke dafür.
Gruß, Jan
Hallo,
Von XUL fällt mir gare ein:
http://www.meta-text.net/etc/firefox-in-firefox.gif (nein, das ist keine Bildmontage) ;-)
Grüße
Thomas
Hi,
Cheatah, deine Hilfe war zwar recht abstrakt, hat mich aber dennoch zum
Ziel geführt. Danke dafür.
das war der Plan ;-) Übrigens meine ich, es müsste "window.content" heißen, ohne Unterstrich - oder ist das im Firefox anders als in Mozilla?
Cheatah
Hallo,
Übrigens meine ich, es müsste "window.content" heißen, ohne Unterstrich - oder ist das im Firefox anders als in Mozilla?
Also ich habe da ausschließlich 'window._content' gefunden.
http://www.mozilla.org/docs/dom/domref/dom_window_ref.html#1004028
Gruß, Jan