Firefox 5 für Entwickler

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

Änderungen für Webentwickler

HTML

Canvas-Verbesserungen

  • Der 2D-Zeichnungskontext des <canvas> unterstützt jetzt das Angeben eines ImageData-Objekts als Eingabe für die createImageData()-Methode; dies erstellt ein neues ImageData-Objekt mit denselben Dimensionen wie das angegebene Objekt, jedoch immer noch mit allen Pixeln auf transparentes Schwarz voreingestellt. Dies war dokumentiert, wurde aber nicht umgesetzt.
  • Das Angeben nicht-finiten Werten beim Hinzufügen von Farbunterbrechungen durch einen Aufruf der CanvasGradient-Methode addColorStop() wirft jetzt korrekt INDEX_SIZE_ERR statt SYNTAX_ERR.
  • Die HTMLCanvasElement-Methode toDataURL() verwendet jetzt korrekt Kleinbuchstaben für den angegebenen MIME-Typ vor dem Abgleich.
  • getImageData() akzeptiert nun korrekt Rechtecke, die über die Grenzen des Canvas hinausgehen; Pixel außerhalb des Canvas werden als transparentes Schwarz zurückgegeben.
  • drawImage() und createImageData() behandeln jetzt negative Argumente gemäß der Spezifikation, indem das Rechteck um die geeignete Achse gespiegelt wird. Wir benötigen einen Artikel über CSS-Größenanpassung und wie dies funktioniert.
  • Das Angeben nicht-finiten Werten beim Aufruf von createImageData() wirft jetzt richtig eine NOT_SUPPORTED_ERR-Ausnahme.
  • createImageData() und getImageData() geben nun korrekt mindestens ein Pixel Bilddaten zurück, wenn ein Rechteck kleiner als ein Pixel angegeben wird.
  • Das Angeben eines negativen Radius beim Aufruf von createRadialGradient() wirft jetzt korrekt INDEX_SIZE_ERR.
  • Das Angeben eines null- oder undefined-Bildes beim Aufruf von createPattern() oder drawImage() wirft jetzt korrekt eine TYPE_MISMATCH_ERR-Ausnahme.
  • Das Angeben ungültiger Werte für globalAlpha wirft keine SYNTAX_ERR-Ausnahme mehr; diese werden jetzt korrekt stillschweigend ignoriert.
  • Das Angeben ungültiger Werte beim Aufruf von translate(), transform(), rect(), clearRect(), fillRect(), strokeRect(), lineTo(), moveTo(), quadraticCurveTo() oder arc() wirft keine Ausnahme mehr; diese Aufrufe werden jetzt korrekt stillschweigend ignoriert.
  • Das Festlegen des Wertes von shadowOffsetX, shadowOffsetY oder shadowBlur auf einen ungültigen Wert wird jetzt stillschweigend ignoriert.
  • Das Festlegen des Wertes von rotate oder scale auf einen ungültigen Wert wird jetzt stillschweigend ignoriert.

CSS

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

DOM

  • Die Methode modify() des Selection-Objekts wurde so geändert, dass die Granularität der Wortauswahl keine nachfolgenden Leerzeichen mehr einschließt; dies macht sie plattformübergreifend konsistenter und entspricht dem Verhalten der WebKit-Implementierung.
  • Die Methoden setTimeout() und setTimeout() sind jetzt begrenzt, um nicht mehr als ein Timeout pro Sekunde in inaktiven Tabs zu senden. Außerdem sind verschachtelte Timeouts jetzt auf den kleinsten Wert begrenzt, der von der HTML5-Spezifikation erlaubt ist: 4 ms (statt der früheren 10 ms).
  • Ähnlich sind die Methoden Window.setInterval() und WorkerGlobalScope.setInterval() jetzt auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs begrenzt.
  • XMLHttpRequest unterstützt jetzt das loadend-Ereignis für Fortschitts-Listener. Dieses wird nach jedem Übertragungsende gesendet (d. h. nach dem abort-, error- oder load-Ereignis). Sie können dies verwenden, um alle Aufgaben zu erledigen, die unabhängig vom Erfolg oder Misserfolg einer Übertragung durchgeführt werden müssen.
  • Die slice()-Methode der [Blob]- und dadurch der [File]-Objekte 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 wird momentan mozSlice() genannt.
  • Der Wert von Navigator.language wird jetzt bestimmt, indem der Wert des Accept-Language-HTTP-Headers betrachtet wird.
  • Die Eigenschaft Element.prefix ist jetzt schreibgeschützt, wie es von der DOM-Spezifikation gefordert wird.
  • Das HTMLVideoElement unterstützt jetzt experimentelle Eigenschaften, um Informationen über Videomalanzeigen wie Bildraten zu erhalten.

JavaScript

  • Reguläre Ausdrücke sind nicht mehr aufrufbar, als ob sie Funktionen wären; diese Änderung wurde in Zusammenarbeit mit dem WebKit-Team vorgenommen, um die Kompatibilität zu gewährleisten (siehe Webkit-Fehler 28285). Diese Funktion existierte schon lange, war jedoch nie dokumentiert worden (zumindest nicht hier auf MDC).
  • Die Function.prototype.isGenerator()-Methode wird jetzt unterstützt; damit können Sie feststellen, ob eine Funktion ein Generator ist.
  • Die folgenden reservierten Wörter wurden zuvor nur im strikten Modus als reserviert betrachtet; jetzt werden sie immer als reserviert betrachtet: class, enum, export, extends, import und super.
  • DOM-Dokumente, die im Chrome-Code erstellt werden, dürfen nicht mehr an gesandboxte Skripte weitergegeben werden.
  • Der JSON-Parser wurde neu geschrieben für verbesserte Geschwindigkeit und Konformität. Dies schließt einen Fix für Firefox-Fehler 572279 ein.

SVG

  • Das class-SVG-Attribut kann jetzt animiert werden.
  • Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind jetzt indexierbar und können wie Arrays abgefragt werden; zudem haben sie eine length-Eigenschaft, die die Anzahl der Einträge in den Listen angibt: SVGLengthList, SVGNumberList, SVGPathSegList und SVGPointList.

HTTP

  • Firefox sendet den Keep-Alive-HTTP-Header nicht mehr; wir formatierten ihn nicht korrekt, und er war redundant, da wir ohnehin den Connection oder Proxy-Connection-Header mit dem Wert "keep-alive" versendeten.
  • Das HTTP-Transaktionsmodell wurde aktualisiert, um beim erneuten Verwenden von Verbindungen im persistenten Verbindungspool intelligenter zu agieren; anstatt den Pool als FIFO-Warteschlange zu behandeln, versucht Necko, den Pool so zu sortieren, dass Verbindungen mit dem größten congestion window (CWND) zuerst genutzt werden. Dies kann die Round-Trip-Time (RTT) von HTTP-Transaktionen reduzieren, indem in vielen Fällen das Wachsen der Verbindungsfenster vermieden wird.
  • Firefox behandelt jetzt den Content-Disposition-HTTP-Response-Header effektiver, wenn sowohl filename als auch filename*-Parameter vorhanden sind; es prüft alle bereitgestellten Namen und verwendet den filename*-Parameter, wenn einer verfügbar ist, sogar wenn ein filename-Parameter zuerst angegeben wird. Zuvor wurde der erste übereinstimmende Parameter verwendet, was verhinderte, dass ein angemessenerer Name genutzt wurde. Siehe Firefox-Fehler 588781.

MathML

Entwicklerwerkzeuge

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

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

Für einen Leitfaden zur Aktualisierung Ihres Add-ons für Firefox 5, siehe Aktualisieren von Add-ons für Firefox 5.

Hinweis: Firefox 5 erfordert, dass Binärkomponenten neu kompiliert werden, wie es bei allen Hauptversionen von Firefox der Fall ist. Siehe Binary Interfaces für Details.

Ä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 von Schlüssel/Wert-Paaren.

NetUtil.jsm

  • Die asyncFetch()-Methode unterstützt jetzt das Angeben der Eingangsquelle als nsIInputStream.

Schnittstellenänderungen

  • Die nsIHttpChannelInternal-Schnittstelle hat neue Attribute, die Zugriff auf Informationen über die Adressen und Ports der Endpunkte der Kanäle bieten. Diese Informationen werden hauptsächlich für Debugging-Zwecke bereitgestellt.
  • Die Attribute width und height des <canvas>-Elements werden jetzt in IDL als unsignierte Ganzzahlen statt als signiert 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 wurden als Implementierungsdetails eingestuft und sind nicht mehr erforderlich:

Debug-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 hat jetzt standardmäßig den Wert "browser". Nach dem Herunterladen oder Abrufen des Codes können Sie configure && make (oder make -f client.mk) ausführen, um Firefox zu bauen.

Siehe auch