Firefox 5 für Entwickler

Firefox 5, basierend auf Gecko 5.0, wurde am 21. Juni 2011 veröffentlicht. Dieser Artikel enthält Links zu Informationen über die Änderungen, die Entwickler in dieser Version betreffen.

Änderungen für Webentwickler

HTML

Verbesserungen für Canvas

  • Der 2D-Zeichnungskontext des <canvas> unterstützt jetzt die Angabe eines ImageData-Objekts als Eingabe für die createImageData()-Methode; dies erstellt ein neues ImageData-Objekt, das mit den gleichen Abmessungen wie das angegebene Objekt initialisiert ist, jedoch immer noch mit allen Pixeln auf transparentes Schwarz voreingestellt. Dies war bereits als implementiert dokumentiert, jedoch nicht umgesetzt.
  • Werden nicht-endliche Werte beim Hinzufügen von Farbverläufen über einen Aufruf der CanvasGradient-Methode addColorStop() angegeben, wird jetzt korrekt INDEX_SIZE_ERR anstelle von SYNTAX_ERR geworfen.
  • Die Methode toDataURL() des HTMLCanvasElement wandelt nun den angegebenen MIME-Typ vor der Übereinstimmung korrekt in Kleinbuchstaben um.
  • getImageData() akzeptiert jetzt korrekt Rechtecke, die über die Grenzen des Canvas hinausgehen; Pixel außerhalb des Canvas werden als transparentes Schwarz zurückgegeben.
  • drawImage() und createImageData() behandeln negative Argumente nun gemäß der Spezifikation, indem sie das Rechteck um die entsprechende Achse spiegeln. Wir benötigen einen Artikel über CSS-Sizing und wie dies funktioniert.
  • Die Angabe von nicht-endlichen Werten beim Aufruf von createImageData() wirft nun korrekt eine NOT_SUPPORTED_ERR-Ausnahme.
  • createImageData() und getImageData() geben jetzt korrekt mindestens ein Pixelbild zurück, wenn ein Rechteck kleiner als ein Pixel angegeben wird.
  • Beim Aufruf von createRadialGradient() mit einem negativen Radius wird nun korrekt INDEX_SIZE_ERR geworfen.
  • Die Angabe eines null oder undefined Bildes beim Aufruf von createPattern() oder drawImage() wirft nun korrekt eine TYPE_MISMATCH_ERR-Ausnahme.
  • Die Angabe ungültiger Werte für globalAlpha wirft keine SYNTAX_ERR-Ausnahme mehr; diese werden nun korrekt stillschweigend ignoriert.
  • Die Angabe ungültiger Werte bei den Aufrufen von translate(), transform(), rect(), clearRect(), fillRect(), strokeRect(), lineTo(), moveTo(), quadraticCurveTo() oder arc() wirft keine Ausnahme mehr; diese Aufrufe werden nun korrekt stillschweigend ignoriert.
  • Das Setzen eines ungültigen Wertes für shadowOffsetX, shadowOffsetY oder shadowBlur wird nun stillschweigend ignoriert.
  • Das Setzen eines ungültigen Wertes für rotate oder scale wird nun stillschweigend ignoriert.

CSS

CSS-Animationen

Unterstützung für CSS-Animationen wurde hinzugefügt, vorerst mit dem Präfix -moz-.

DOM

  • Die Methode modify() des Selection-Objekts wurde geändert, sodass die Granularität der "word"-Auswahl keine nachfolgenden Leerzeichen mehr umfasst; dies macht es plattformübergreifend konsistenter und bringt es in Einklang mit dem Verhalten von WebKits Implementierung.
  • Die Methoden setTimeout() und setTimeout() werden nun auf maximal einen Timeout pro Sekunde in inaktiven Tabs geklammert. Darüber hinaus wird jetzt auch für verschachtelte Timeouts der kleinste vom HTML5-Standard erlaubte Wert eingehalten: 4 ms (statt der bisher 10 ms).
  • Ähnlich wird die Methode Window.setInterval() und WorkerGlobalScope.setInterval() auf maximal ein Intervall pro Sekunde in inaktiven Tabs geklammert.
  • XMLHttpRequest unterstützt nun das loadend-Ereignis für Fortschritts-Listener. Dies wird gesendet, nachdem jede Übertragung abgeschlossen ist (d.h. nach dem Ereignis abort, error oder load). Sie können dies verwenden, um alle Aufgaben zu erledigen, die unabhängig vom Erfolg oder Misserfolg einer Übertragung ausgeführt werden müssen.
  • Die Methode slice() der Objekte Blob und in Erweiterung auch der Objekte File wurde entfernt und durch eine neue, vorgeschlagene Syntax ersetzt, die sie konsistenter mit den Methoden Array.slice() und String.slice() in JavaScript macht. Diese Methode trägt vorerst den Namen mozSlice().
  • Der Wert von Navigator.language wird nun durch den Wert des Accept-Language HTTP-Headers bestimmt.
  • Die Eigenschaft Element.prefix ist nun schreibgeschützt, wie von der DOM-Spezifikation gefordert.
  • Das HTMLVideoElement unterstützt nun experimentelle Eigenschaften, um Informationen über Video-Rahmenraten wie Bildraten zu erhalten.

JavaScript

  • Reguläre Ausdrücke sind nicht mehr aufrufbar, als wären sie Funktionen; diese Änderung wurde in Zusammenarbeit mit dem WebKit-Team vorgenommen, um Kompatibilität sicherzustellen (siehe WebKit bug 28285). Dieses Feature existierte schon lange, wurde jedoch nie dokumentiert (zumindest nicht hier auf MDC).
  • Die Methode Function.prototype.isGenerator() wird nun unterstützt; damit können Sie feststellen, ob eine Funktion ein Generator ist.
  • Die folgenden reservierten Wörter wurden bisher nur im Strict-Modus als reserviert behandelt; jetzt werden sie immer als reserviert behandelt: class, enum, export, extends, import und super.
  • DOM-Dokumente, die im Chrome-Code erstellt wurden, dürfen nicht mehr in Sandbox-Skripten offengelegt werden.
  • Der JSON-Parser wurde für verbesserte Geschwindigkeit und Konformität neu geschrieben. Dies beinhaltet eine Korrektur für Firefox bug 572279.

SVG

  • Das class-Attribut von SVG kann nun animiert werden.
  • Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind nun indizierbar und können wie Arrays zugegriffen werden; darüber hinaus haben sie eine length-Eigenschaft, die die Anzahl der Elemente in den Listen angibt: SVGLengthList, SVGNumberList, SVGPathSegList und SVGPointList.

HTTP

  • Firefox sendet den HTTP-Header Keep-Alive nicht mehr; wir haben ihn nicht korrekt formatiert, und er war redundant, da wir sowieso den Header Connection oder Proxy-Connection mit dem Wert "keep-alive" gesendet haben.
  • Das HTTP-Transaktionsmodell wurde aktualisiert, um intelligenter mit der Wiederverwendung von Verbindungen im persistenten Verbindungspool umzugehen; statt den Pool als FIFO-Queue zu behandeln, versucht Necko nun, den Pool mit Verbindungen mit dem größten Stau-Fenster (CWND) zuerst zu sortieren. Dies kann die Round-Trip-Zeit (RTT) von HTTP-Transaktionen reduzieren, indem es in vielen Fällen das Wachstum der Verbindungsfenster vermeidet.
  • Firefox behandelt den HTTP-Antwort-Header Content-Disposition nun effektiver, wenn sowohl die Parameter filename als auch filename* vorhanden sind; es durchsucht alle bereitgestellten Namen und verwendet den Parameter filename*, wenn einer verfügbar ist, auch wenn zuerst ein filename-Parameter enthalten ist. Zuvor wurde der erste passende Parameter verwendet, wodurch verhindert wurde, dass ein geeigneterer Name verwendet wird. Siehe Firefox bug 588781.

MathML

Entwicklerwerkzeuge

  • Das Web Console Console-Objekt hat jetzt eine debug()-Methode, die alias für seine log()-Methode ist; dies verbessert die Kompatibilität mit bestimmten bestehenden Websites.

Änderungen für Mozilla- und Add-on-Entwickler

Für einen Leitfaden zum Aktualisieren Ihres Add-ons für Firefox 5 lesen Sie bitte Aktualisieren von Add-ons für Firefox 5.

Hinweis: Firefox 5 erfordert, dass binäre Komponenten neu kompiliert werden, ebenso wie alle Hauptversionen von Firefox. Weitere Einzelheiten finden Sie in den Binary Interfaces.

Änderungen an JavaScript-Code-Modulen

Neue JavaScript-Code-Module

  • Das Dict.jsm-Code-Modul wurde hinzugefügt; es bietet eine API für Wörterbücher aus Schlüssel/Wert-Paaren.

NetUtil.jsm

  • Die Methode asyncFetch() unterstützt nun das Angeben der Eingabequelle als nsIInputStream.

Schnittstellenänderungen

  • Die Schnittstelle nsIHttpChannelInternal hat neue Attribute, die den Zugriff auf Informationen über die Adressen und Ports der Kanalendpunkte ermöglichen. Diese Informationen werden hauptsächlich zu Debugging-Zwecken bereitgestellt.
  • Die Attribute width und height des <canvas>-Elements werden nun in IDL als unsignierte Ganzzahlen anstelle von signierten reflektiert (siehe HTMLCanvasElement).
  • Die Schnittstellen nsIAppStartup2 und nsIAppStartup_MOZILLA_2_0 wurden in die nsIAppStartup-Schnittstelle zusammengeführt.
  • Die Schnittstelle nsIDocShell_MOZILLA_2_0_BRANCH wurde in die nsIDocShell-Schnittstelle zusammengeführt.
  • Die Schnittstelle nsIFocusManager_MOZILLA_2_0_BRANCH wurde in die nsIFocusManager-Schnittstelle zusammengeführt.
  • Die Schnittstelle nsIHTMLEditor_MOZILLA_2_0_BRANCH wurde in die nsIHTMLEditor-Schnittstelle zusammengeführt.

Neue Schnittstellen

Entfernte Schnittstellen

Die folgenden Schnittstellen waren Implementierungsdetails, die nicht mehr benötigt werden:

Debugging-Hilfen

  • Der neue DebugOnly<T>-Helfer ermöglicht es, Variablen nur für DEBUG-Builds zu deklarieren.

JavaScript API (SpiderMonkey)

Änderungen am Build-System

  • Sie können jetzt Firefox ohne eine mozconfig-Datei bauen; die --enable-application-Einstellung ist nun standardmäßig auf "browser" gesetzt. Nach dem Herunterladen oder Pullen des Codes können Sie configure && make (oder make -f client.mk) verwenden, um Firefox zu bauen.