mozilla

Version 113608 von Erweiterungen FAQ

  • Adressname der Version: Erweiterungen_FAQ
  • Titel der Version: Erweiterungen FAQ
  • ID der Version: 113608
  • Erstellt:
  • Autor: Jules Papillon
  • Aktuelle Version? Nein
  • Kommentar /* Wie kann ich den Ablauf meiner Erweiterung verfolgen? */ Vorlage integriert
Schlagwörter: 

Inhalt der Version

Dies ist eine Sammlung mit häufig gestellten Fragen zur Entwicklung von Erweiterungen. Die meisten werden derzeit wohl für den Firefoxbrowser geschrieben. Viele, wenn nicht sogar alle, sollten relativ einfach an SeaMonkey, Thunderbird oder jede andere Anwendung angepasst werden können.

Falls du dich fragst wo du am besten beginnen solltest versuche es mit unserem Tutorial Erweiterung_erstellen oder MozillaZine's Getting started tutorial. Du kannst den Extension Wizard benutzen um ein Template für den ersten Start zu erstellen.

Vergiss nicht eine Entwicklungsumgebung einzurichten.

Debuggen

Du solltest deine Entwicklungsumgebung einrichten bevor du versuchst deine Erweiterung zu debuggen.

Der Venkman JavaScript Debugger sollte in schwierigen Fällen nützlich sein. Vergiss nicht die "Debug -> Exclude Browser Files" Option zu deaktivieren wenn du an deiner Erweiterung arbeitest.

Wie finde ich Fehler in meinem Code?

Wenn die Option javascript.options.showInConsole auf true eingestellt ist werden alle Fehler in der Fehlerkonsole gemeldet. Wenn alle JavaScriptfehler in der Konsole geloggt werden ist es einfacher die Bugs im Code zu verfolgen.

Wie kann ich den Ablauf meiner Erweiterung verfolgen?

Du kannst alert(), dump() oder Components.utils.reportError() benutzen. Mithilfe von {{template.Interface("nsIConsoleService")}} können ebenfalls variable Daten sowie Debuggingtext an die Fehlerkonsole gesendet werden. Alternativ kann die Venkman JavaScript Debugger Erweiterung benutzt werden.

Warum läuft mein Skript nicht wie erwartet?

Falls sich dein Script nicht wie erwartet verhält solltest du zu erst die Fehlerkonsole auf Fehler prüfen (sie oben).

Häufig wird versucht auf den DOM eines Fensters zuzugreifen noch bevor dieses vollständig geladen wurde. Das passiert wenn der Initialisierungscode am Anfang des Skriptes eingebunden wird (u.a. außerhalb einer Funktion). Durch die Nutzung eines Loadevent-Listeners kann dieses Problem gelöst werden da der Code erst ausgeführt wird wenn die Seite vollständig geladen wurde:

function exampleBrowserStartup(event)
{
  // place your startup code here
}
window.addEventListener("load", exampleBrowserStartup, false);

Warum kann ich auf die angezeigte Webseite nicht zugreifen?

Um auf die angezeigte Webseite von einem browser.xul overlay zuzugreifen müssen sie content.document statt document benutzen, da dieses das Browserfenster selbst repräsentiert. Weitere Details findest du unter Arbeiten_mit_Fenstern_im_Chrome_Code

Außerdem verhindert der XPCNativeWrapper defaultmäßig den Zugriff auf Scriptdefinierte Objecte der Webseite und einige andere Dinge.

Ich bekomme einen XML-Parser-Fehler. Aber die Datei sieht einwandfrei aus!

Eine häufiger Grund für Parser-Fehler (roter text mit einem -------------^ darunter) ist ein & oder < Zeichen in deinem Script oder ein Attributwert mit einer speziellen Bedeutung in XML. Zum Beispiel:

<button oncommand="window.open('http://example.com/q?param1=value&param2=val2')"/>

oder

<script>function lesser(a,b) { return a < b ? a : b; }</script>

Das Problem kann auf folgende Arten gelöst werden:

  1. Ersetze das Zeichen mit seiner XML-konformen Repräsentation. (Z.B.: "&" -> "&", "<" -> "<")
  2. Falls es sich um einen Textknoten wie z.B. ein Script handelt platziere diesen in CDATA Tags:
  3.  <script><![CDATA[
       function lesser(a,b) {
         return a < b ? a : b;
       }
     ]]></script>
    
  4. Verschiebe dein Script in eine externe Datei und binde diese ein:
  5. <script type="application/x-javascript" src="our.js"/>

Beispiel Code

Der einfachste Weg ist es wohl eine passende Extension (oder Teile von Mozilla selbst) zu finden die genau das tut was man benötigt und dort in den Code schaut. (Die XPI und JAR Dateien sind im ZIP-Format komprimiert.)

Außerdem gibt noch weitere Dokumentationen. Zu finden sind diese in der Liste relevanter Artikel auf MDC, Code Schnipsel und Beispielcode auf MozillaZine.

Wo finde ich weitere Hilfe?

Unter Erweiterungen:Andere Ressourcen und Erweiterungen:Community.

Bevor du nach Hilfe fragst kontrolliere deine Entwicklungsumgebung und überprüfe die Fehlerkonsole auf relevante Einträge. Außerdem solltest du zumindest eine einfach Suche durchgeführt haben. Und lies diese FAQ!

{{ wiki.languages( { "en": "en/Extension_Frequently_Asked_Questions", "es": "es/Preguntas_frecuentes_sobre_Extensiones", "fr": "fr/Foire_aux_questions_sur_les_extensions", "it": "it/Domande_frequenti_sulle_Estensioni", "ja": "ja/Extension_Frequently_Asked_Questions", "pl": "pl/Cz\u0119sto_zadawane_pytania_dotycz\u0105ce_rozszerze\u0144" } ) }}

Quelltext der Version

<p>Dies ist eine Sammlung mit häufig gestellten Fragen zur Entwicklung von <a href="de/Erweiterungen">Erweiterungen</a>. Die meisten werden derzeit wohl für den Firefoxbrowser geschrieben. Viele, wenn nicht sogar alle, sollten relativ einfach an SeaMonkey, Thunderbird oder jede andere Anwendung angepasst werden können.
</p><p>Falls du dich fragst wo du am besten beginnen solltest versuche es mit unserem Tutorial <a href="de/Erweiterung_erstellen">Erweiterung_erstellen</a> oder <a class="external" href="http://kb.mozillazine.org/Getting_started_with_extension_development">MozillaZine's Getting started tutorial</a>. Du kannst den <a class="external" href="http://ted.mielczarek.org/code/mozilla/extensionwiz/">Extension Wizard</a> benutzen um ein Template für den ersten Start zu erstellen.
</p><p>Vergiss nicht eine <a href="de/Einrichten_einer_Entwicklungsumgebung_f%c3%bcr_Erweiterungen"> Entwicklungsumgebung</a> einzurichten.
</p>
<h3 name="Debuggen">Debuggen</h3>
<p>Du solltest deine <a href="de/Einrichten_einer_Entwicklungsumgebung_f%c3%bcr_Erweiterungen"> Entwicklungsumgebung</a> einrichten bevor du versuchst deine Erweiterung zu debuggen.
</p><p>Der <a class="external" href="http://www.hacksrus.com/~ginda/venkman/">Venkman JavaScript Debugger</a> sollte in schwierigen Fällen nützlich sein. Vergiss nicht die "Debug -&gt; Exclude Browser Files" Option zu deaktivieren wenn du an deiner Erweiterung arbeitest.
</p>
<h4 name="Wie_finde_ich_Fehler_in_meinem_Code.3F">Wie finde ich Fehler in meinem Code?</h4>
<p>Wenn die <a href="de/Einrichten_einer_Entwicklungsumgebung_f%c3%bcr_Erweiterungen"> Option <i>javascript.options.showInConsole</i></a> auf <i>true</i> eingestellt ist werden alle Fehler in der <a href="de/Fehlerkonsole">Fehlerkonsole</a> gemeldet. Wenn alle JavaScriptfehler in der Konsole geloggt werden ist es einfacher die Bugs im Code zu verfolgen.
</p>
<h4 name="Wie_kann_ich_den_Ablauf_meiner_Erweiterung_verfolgen.3F">Wie kann ich den Ablauf meiner Erweiterung verfolgen?</h4>
<p>Du kannst <a href="de/DOM/Window.alert"> alert()</a>, <a href="de/DOM/Window.dump"> dump()</a> oder <a href="de/Components.utils.reportError"> Components.utils.reportError()</a> benutzen. Mithilfe von {{template.Interface("nsIConsoleService")}} können ebenfalls variable Daten sowie Debuggingtext an die Fehlerkonsole gesendet werden. Alternativ kann die <a class="external" href="http://www.hacksrus.com/~ginda/venkman/">Venkman JavaScript Debugger</a> Erweiterung benutzt werden.
</p>
<h4 name="Warum_l.C3.A4uft_mein_Skript_nicht_wie_erwartet.3F">Warum läuft mein Skript nicht wie erwartet?</h4>
<p>Falls sich dein Script nicht wie erwartet verhält solltest du zu erst die Fehlerkonsole auf Fehler prüfen (sie <a href="de/Erweiterungen_FAQ#Wie_finde_ich_Fehler_in_meinem_Code.3F"> oben</a>). 
</p><p>Häufig wird versucht auf den DOM eines Fensters zuzugreifen noch bevor dieses vollständig geladen wurde. Das passiert wenn der Initialisierungscode am Anfang des Skriptes eingebunden wird (u.a. außerhalb einer Funktion). Durch die Nutzung eines Loadevent-Listeners kann dieses Problem gelöst werden da der Code erst ausgeführt wird wenn die Seite vollständig geladen wurde:
</p>
<pre>function exampleBrowserStartup(event)
{
  // place your startup code here
}
window.addEventListener("load", exampleBrowserStartup, false);
</pre>
<h4 name="Warum_kann_ich_auf_die_angezeigte_Webseite_nicht_zugreifen.3F">Warum kann ich auf die angezeigte Webseite nicht zugreifen?</h4>
<p>Um auf die angezeigte Webseite von einem browser.xul overlay zuzugreifen müssen sie <i>content.document</i> statt <i>document</i> benutzen, da dieses das Browserfenster selbst repräsentiert. Weitere Details findest du unter <a href="de/Arbeiten_mit_Fenstern_im_Chrome_Code">Arbeiten_mit_Fenstern_im_Chrome_Code</a>
</p><p>Außerdem verhindert der XPCNativeWrapper defaultmäßig den Zugriff auf Scriptdefinierte Objecte der Webseite und einige andere Dinge.
</p>
<h4 name="Ich_bekomme_einen_XML-Parser-Fehler._Aber_die_Datei_sieht_einwandfrei_aus.21">Ich bekomme einen XML-Parser-Fehler. Aber die Datei sieht einwandfrei aus!</h4>
<p>Eine häufiger Grund für Parser-Fehler (<span style="color:red;">roter text</span> mit einem <span style="color:red;">-------------^</span> darunter) ist ein &amp; oder &lt; Zeichen in deinem Script oder ein Attributwert mit einer speziellen Bedeutung in XML. Zum Beispiel:
</p>
<pre class="eval">&lt;button oncommand="window.open('<span class="plain">http://example.com/q?param1=value</span><b>&amp;param2</b>=val2')"/&gt;
</pre>
<p>oder
</p>
<pre class="eval">&lt;script&gt;function lesser(a,b) { return a &lt; b ? a : b; }&lt;/script&gt;
</pre>
<p>Das Problem kann auf folgende Arten gelöst werden:
</p>
<ol>
<li>Ersetze das Zeichen mit seiner XML-konformen Repräsentation. (Z.B.: "&amp;" -&gt; "&amp;", "&lt;" -&gt; "&lt;")</li>
<li>Falls es sich um einen Textknoten wie z.B. ein Script handelt platziere diesen in CDATA Tags:</li>
<pre> &lt;script&gt;&lt;![CDATA[
   function lesser(a,b) {
     return a &lt; b ? a : b;
   }
 ]]&gt;&lt;/script&gt;
</pre>
<li>Verschiebe dein Script in eine externe Datei und binde diese ein:</li>
<pre>&lt;script type="application/x-javascript" src="our.js"/&gt;</pre>
</ol>
<h3 name="Beispiel_Code">Beispiel Code</h3>
<p>Der einfachste Weg ist es wohl eine passende Extension (oder Teile von Mozilla selbst) zu finden die genau das tut was man benötigt und dort in den Code schaut. (Die XPI und JAR Dateien sind im ZIP-Format komprimiert.)
</p><p>Außerdem gibt noch weitere Dokumentationen. Zu finden sind diese in der <a href="Special:Tags?tag=Erweiterungen&amp;language=de"> Liste relevanter Artikel auf MDC</a>, <a href="de/Code_Schnipsel">Code Schnipsel</a> und <a class="external" href="http://kb.mozillazine.org/Category:Example_code">Beispielcode auf MozillaZine</a>.
</p>
<h3 name="Wo_finde_ich_weitere_Hilfe.3F">Wo finde ich weitere Hilfe?</h3>
<p>Unter <a href="de/Erweiterungen/Andere_Ressourcen">Erweiterungen:Andere Ressourcen</a> und <a href="de/Erweiterungen/Community">Erweiterungen:Community</a>.
</p><p>Bevor du nach Hilfe fragst kontrolliere deine <a href="de/Einrichten_einer_Entwicklungsumgebung_f%c3%bcr_Erweiterungen"> Entwicklungsumgebung</a> und überprüfe die <a href="de/Fehlerkonsole">Fehlerkonsole</a> auf relevante Einträge. Außerdem solltest du zumindest eine einfach Suche durchgeführt haben. <b>Und lies <u>diese</u> FAQ!</b>
</p>{{ wiki.languages( { "en": "en/Extension_Frequently_Asked_Questions", "es": "es/Preguntas_frecuentes_sobre_Extensiones", "fr": "fr/Foire_aux_questions_sur_les_extensions", "it": "it/Domande_frequenti_sulle_Estensioni", "ja": "ja/Extension_Frequently_Asked_Questions", "pl": "pl/Cz\u0119sto_zadawane_pytania_dotycz\u0105ce_rozszerze\u0144" } ) }}
Zu dieser Version zurücksetzen