Dieser Artikel soll Anregungen geben wie Sie ihre Mozilla-Anwendung zur Entwicklung von Erweiterungen einrichten können. Dieser Artikel bezieht sich sowohl auf Firefox als auch auf Thunderbird und SeaMonkey in der Version 2.0 und höher.
Überblick
- Erstellen Sie ein Entwicklerprofil, um Ihren Firefox mit Entwicklungseinstellungen in
about:config
auszustatten. - Installieren Sie einige Erweiterungen für Entwickler in Ihrem Entwicklerprofil.
- Bearbeiten Sie die Erweiterungsdateien und starten Sie die Anwendung mit Ihrem Entwicklerprofil.
Entwicklerprofil
Um die Geschwindigkeitseinbußen durch Einstellungen und Erweiterungen zu Entwicklung sowie den Verlust persönlicher Daten zu vermeiden, sollten Sie ein gesondertes Entwicklerprofil einrichten.
Sie können zwei Firefox-Instanzen mit unterschiedlichen Profilen nutzen, wenn Sie den Browser mit dem -no-remote
Parameter starten. Beispielsweise können Sie mit dem folgenden Befehl Ihr Entwicklerprofil, von dem wir annehmen, dass es "dev" heißt, unabhängig davon starten, ob bereits eine "normale" Instanz von Firefox läuft oder nicht:
Unter Ubuntu (und vielen anderen Linux Distributionen):
/usr/bin/firefox -no-remote -P dev
Unter einigen anderen Distributionen von Linux/Unix:
/usr/local/bin/firefox -no-remote -P dev
Unter Mac:
/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev &
Unter Windows:
Start -> Ausführen "%ProgramFiles%\Mozilla Firefox\firefox.exe" -no-remote -P dev
Unter Windows 64 bit:
Start -> Run "%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" -no-remote -P dev
Um Thunderbird oder SeaMonkey zu starten, muss "Firefox" in den Beispielen entsprechend ersetzt werden.
Wenn das Profil noch nicht besteht wird es automatisch erstellt. Um Firefox wie gewöhnlich zu starten, kann einfach "firefox" oder "firefox -P default" verwendet werden.
Außerdem können gleichzeitig verschiedene Versionen des Firefox installiert werden, um die Kompatibilität der Erweiterung zu testen. Es können sogar stabile Versionen sowie die aktuelle Entwicklerversion auf einem System installiert werden.
Siehe auch: Installing Firefox 3 or Minefield while keeping Firefox 2 (englisch)
Um mehrere Restarts zu vereinfachen, kann ein Profil für den regulären Gebrauch und ein zweites Für das Testen von Erweiterungen verwendet werden. Durch das "no-remote"
Kommando können beide Profile gleichzeitig ausgeführt werden. Eine Beschreibung findet sich unter https://kb.mozillazine.org/Command_line_arguments. Diese beiden Verknüpfungen für Windows sind dazu sehr hilfreich:
...firefox.exe -no-remote -p "profile1"
...firefox.exe -no-remote -p "profile2"
Ersetzen Sie "..." mit einem regulären Pfad. Erstellen Sie beide Verknüpfungen und schon ist es sehr einfach beide Profile gleichzeitig zu verwenden.
Entwicklungseinstellungen
Diese Einstellungen erleichtern das Debuggen auf Kosten sinkender Geschwindigkeit.
Unter Editing Configuration Files und About:config Einstellungen finden sich weitere Informationen wie Einstellungen vorgenommen werden können. Beachten Sie, dass nicht alle relevanten Einstellungen defaultmäßig unter about:config
angezeigt werden. Daher müssen für diese Einstellungen neue Einträge (boolean) angelegt werden.
Diese Änderungen sollten nur in einem gesondert angelegtem Entwicklerprofil gemacht werden.
- javascript.options.showInConsole = true. Logt Fehler in Chrome-Dateien in die Fehlerkonsole
- nglayout.debug.disable_xul_cache = true. Deaktiviert den XUL Cache damit Änderungen an Fenstern und Dialogen ohne Neustart übernommen werden. Dazu müssen zur Entwicklung Verzeichnisse statt JAR-Archive benutzt werden. Änderungen an XUL-Overlays werden dennoch nur nach dem erneuten Laden des überlagerten Dokumentes übernommen.
- browser.dom.window.dump.enabled = true. Erlaubt die Nutzung von
dump()
, um direkt auf die Standardkonsole zu schreiben. Sie können innerhalb privilegierter Skripte auchnsIConsoleService
benutzen. - javascript.options.strict = true. Aktiviert JavaScript strict Warnungen in der Fehlerkonsole. Viele haben diese Einstellungen während der Entwicklung leider deaktiviert. Daher werden Sie, zusätzlich zu den Warnungen in Bezug auf den Code, viele Warnungen zu Problemen im Code anderer Erweiterungen bekommen. Diese können mit Console2 gefiltert werden.
- extensions.logging.enabled = true. Diese Einstellung aktiviert detailliertere Meldungen der Fehlerkonsole über Installations- und Updateprobleme.
- nglayout.debug.disable_xul_fastload = true. Für Gecko 2.0+ (Firefox 4.0+). Siehe diesen Bug für weitere Informationen.
- Eventuell wollen Sie auch dom.report_all_js_exceptions = true setzen. Siehe Exception logging in JavaScript für weitere Details.
Die Fehlerkonsole ist ab Firefox 4 standardmäßig deaktiviert. Sie können sie wieder aktivieren, indem Sie devtools.errorconsole.enabled
auf true
setzen und den Browser neu starten. Damit wird außerdem standardmäßig javascript.options.showInConsole
auf true
gesetzt.
Erweiterungen für Entwickler
Diese Erweiterungen könnten bei der Entwicklung helfen:
- DOM Inspector, Anschauen und Bearbeiten des DOM von jedem Dokument oder XUL Anwendung (Firefox und Thunderbird)
- Venkman, ein JavaScript Debugger (Firefox Version, Thunderbird Version)
- Extension Developer's Extension ein Sammlung von Tools zur Erweiterungsentwicklung (Firefox)
- Console2 verbesserte JavaScript Konsole (Firefox Version, Thunderbird Version)
- Javascript Command schreiben/testen von JavaScript für Firefox Fenster
- Chrome List Datei unter chrome:// durchsuchen (Firefox Version, Thunderbird Version)
- Chrome Edit Plus Dateieditor (Firefox and Thunderbird)
- Add-on Builder eine Web-basierte Anwendung, welche ein Erweiterungsgrundgerüst erstellt (Firefox, Thunderbird und weitere)
- Firebug eine Vielzahl an Entwicklertools (Firefox)
- Chromebug JavaScript und DOM Debugger (Firefox, "kinda works for Thunderbird")
- MozRepl Firefox und andere Anwendung bearbeiten, während diese laufen (Firefox and Thunderbird)
- ExecuteJS eine verbesserte JavaScript Konsole (Firefox Version, Thunderbird Version)
- XPCOMViewer ein XPCOM Inspektor (Firefox und Thunderbird)
- JavaScript shells JavaScript Codeschnipsel testen (Firefox und Thunderbird)
- SQLite Manager SQLite Datenbanken verwalten (Firefox und Thunderbird)
- ViewAbout Aktiviert Zugang zu verschiedenen "about:" Dialogen aus dem View Menü (Firefox Version, Thunderbird Version)
- Crash Me Now! Nützlich zum Testen des Crash Reporting Systems (Firefox und Thunderbird)
Erweiterung in benutzerdefiniertem Verzeichnis
Anstatt nach jeder Änderung die Erweiterung neu zu installieren und als Schutz vor versehentlichem Löschen, wenn die Anwendung deinstalliert wird, können Sie ein Verzeichnis außerhalb des Profils an einem beliebigen Ort einrichten.
- Suchen Sie in der in der Erweiterung enthaltenen
install.rdf
die ID der Erweiterung - Erstellen Sie eine leere Datei in dem das_profil_verzeichnis/extensions/ mit der ID als Dateiname. (z.B. 'das_profil_verzeichnis/extensions/[email protected]') Wo finde ich meinen Profilordner?
- In dieser Datei wird dann einfach der vollständige Pfad zur
install.rdf
gespeichert.z.B. Linux:
/full/path/to/yourExtension
Oder Windows:
C:\sam\workspace\toolbar\helloWorldtoolbar\
- Platzieren Sie die Datei in den Erweiterungsordner und starten Sie die Anwendung
Verzeichnisse statt JAR-Archiven benutzen
Unabhängig davon, ob Sie Erweiterungsdateien in ein JAR-Archiv oder Verzeichnisse packen, ist es einfacher in einem Verzeichnis zu entwickeln. Auch wenn Sie sich für ein JAR-Archiv für die Veröffentlichung entscheiden, können Sie trotzdem in einem Verzeichnis entwickeln, indem Sie Ihr chrome.manifest ändern.
JAR-Archiv:
content myExtension jar:chrome/myExtension.jar!/content/
Verzeichnis:
content myExtension chrome/content/