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 Veränderungen, die Entwickler in dieser Ausgabe betreffen.

Änderungen für Webentwickler

HTML

Verbesserungen der Canvas

  • Der 2D-Zeichnungskontext von <canvas> unterstützt nun die Angabe eines ImageData-Objekts als Eingabe für die createImageData()-Methode; dies erstellt ein neues ImageData-Objekt, das mit denselben Abmessungen wie das angegebene Objekt initialisiert ist, aber immer noch mit allen Pixeln auf transparentes Schwarz vorgesetzt ist. Dies war bereits als implementiert dokumentiert, war es aber nicht.
  • Die Angabe von nicht-finiten Werten beim Hinzufügen von Farbstopps über einen Aufruf der CanvasGradient-Methode addColorStop() wirft jetzt korrekt INDEX_SIZE_ERR anstelle von SYNTAX_ERR.
  • Die HTMLCanvasElement-Methode toDataURL() konvertiert jetzt korrekt den angegebenen MIME-Type in Kleinbuchstaben, bevor sie ihn vergleicht.
  • getImageData() akzeptiert jetzt korrekt Rechtecke, die über die Grenzen der Leinwand hinausgehen; Pixel außerhalb der Leinwand werden als transparentes Schwarz zurückgegeben.
  • drawImage() und createImageData() behandeln jetzt negative Argumente gemäß der Spezifikation, indem sie das Rechteck um die entsprechende Achse spiegeln. Wir benötigen einen Artikel über CSS-Größenanpassung und wie dies funktioniert.
  • Die Angabe von nicht-finiten Werten beim Aufrufen von createImageData() löst jetzt ordnungsgemäß eine NOT_SUPPORTED_ERR-Ausnahme aus.
  • createImageData() und getImageData() geben jetzt korrekt mindestens ein Pixel-Bilddaten zurück, wenn ein kleineres als ein Pixel großes Rechteck angegeben wird.
  • Die Angabe eines negativen Radius beim Aufruf von createRadialGradient() löst jetzt korrekt INDEX_SIZE_ERR aus.
  • Die Angabe eines null oder undefined Bildes beim Aufruf von createPattern() oder drawImage() löst jetzt korrekt eine TYPE_MISMATCH_ERR-Ausnahme aus.
  • Die Angabe ungültiger Werte für globalAlpha löst keine SYNTAX_ERR-Ausnahme mehr aus; diese werden jetzt korrekt stillschweigend ignoriert.
  • Die Angabe ungültiger Werte beim Aufruf von translate(), transform(), rect(), clearRect(), fillRect(), strokeRect(), lineTo(), moveTo(), quadraticCurveTo() oder arc() löst keine Ausnahme mehr aus; diese Aufrufe werden jetzt korrekt stillschweigend ignoriert.
  • Das Festlegen eines ungültigen Wertes für shadowOffsetX, shadowOffsetY oder shadowBlur wird jetzt stillschweigend ignoriert.
  • Das Festlegen eines ungültigen Wertes für rotate oder scale wird jetzt stillschweigend ignoriert.

CSS

CSS-Animationen

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

DOM

  • Die Methode modify() des Selection-Objekts wurde so geändert, dass die Granularität "Wort" keine nachlaufenden Leerzeichen mehr einschließt; dies macht sie plattformübergreifend konsistenter und entspricht dem Verhalten der WebKit-Implementierung.
  • Die Methoden setTimeout() und setTimeout() sind jetzt darauf begrenzt, nicht mehr als ein Timeout pro Sekunde in inaktiven Tabs zu senden. Darüber hinaus begrenzt es jetzt verschachtelte Timeouts auf den kleinsten, von der HTML5-Spezifikation erlaubten Wert: 4 ms (statt der zuvor verwendeten 10 ms).
  • Ebenso begrenzt die Methode Window.setInterval() und WorkerGlobalScope.setInterval() jetzt auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs.
  • XMLHttpRequest unterstützt jetzt das loadend Ereignis für Fortschrittsbeobachter. Dies wird gesendet, nachdem ein Transfer abgeschlossen ist (d.h. nach dem abort, error oder load Ereignis). Sie können dies nutzen, um Aufgaben zu behandeln, die unabhängig vom Erfolg oder Misserfolg eines Transfers ausgeführt werden müssen.
  • Die slice()-Methode der Blob- und in der Erweiterung 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 heißt vorerst mozSlice().
  • Der Wert von Navigator.language wird jetzt durch den Wert des Accept-Language HTTP-Headers bestimmt.
  • Die Eigenschaft Element.prefix ist jetzt schreibgeschützt, wie es die DOM-Spezifikation verlangt.
  • Das HTMLVideoElement unterstützt nun experimentelle Eigenschaften, um Informationen über Videodarstellungsstatistiken wie Bildraten zu erhalten.

JavaScript

  • Reguläre Ausdrücke können nicht mehr aufgerufen werden, als ob sie Funktionen wären; diese Änderung wurde in Abstimmung mit dem WebKit-Team vorgenommen, um die Kompatibilität zu gewährleisten (siehe WebKit bug 28285). Diese Funktion existierte schon lange, wurde aber nie dokumentiert (zumindest nicht hier auf MDC).
  • Die Methode Function.prototype.isGenerator() 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 behandelt; jetzt werden sie immer als reserviert behandelt: class, enum, export, extends, import und super.
  • DOM-Dokumente, die im Chrome-Code erstellt wurden, können jetzt nicht mehr an gesandboxten Skripten weitergegeben 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 SVG-Attribut kann nun animiert werden.
  • Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind jetzt indexierbar und können wie Arrays angesprochen werden; außerdem haben sie eine length-Eigenschaft, die die Anzahl der Elemente in den Listen angibt: SVGLengthList, SVGNumberList, SVGPathSegList und SVGPointList.

HTTP

  • Firefox sendet nicht mehr den Keep-Alive HTTP-Header; wir haben ihn nicht korrekt formatiert, und er war redundant, da wir auch den Connection oder Proxy-Connection-Header mit dem Wert "keep-alive" gesendet haben.
  • Das HTTP-Transaktionsmodell wurde aktualisiert, um intelligenter mit der Wiederverwendung von Verbindungen im persistenten Verbindungspool umzugehen; anstatt den Pool als FIFO-Warteschlange zu behandeln, versucht Necko jetzt, den Pool nach Verbindungen mit dem größten Stau-Fenster (CWND) zu sortieren. Dies kann die Round-Trip-Zeit (RTT) von HTTP-Transaktionen reduzieren, indem in vielen Fällen das Wachsen der Fenster von Verbindungen vermieden wird.
  • Firefox verarbeitet den Content-Disposition HTTP-Antwort-Header jetzt effektiver, wenn sowohl die filename als auch die filename* Parameter bereitgestellt werden; es durchläuft alle bereitgestellten Namen und verwendet den filename*-Parameter, wenn einer verfügbar ist, selbst wenn ein filename-Parameter zuerst enthalten ist. Bisher wurde der erste übereinstimmende Parameter verwendet, was verhinderte, dass ein angemessenerer Name verwendet wurde. Siehe Firefox bug 588781.

MathML

Entwicklerwerkzeuge

  • Das Konsolenobjekt der Web-Konsole verfügt jetzt über eine debug()-Methode, die ein Alias für die log()-Methode ist; dies verbessert die Kompatibilität mit bestimmten bestehenden Websites.

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

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

Hinweis: Firefox 5 erfordert, dass binäre Komponenten neu kompiliert werden, ebenso wie alle Hauptversionen von Firefox. Siehe Binäre Schnittstellen für Details.

Änderungen an JavaScript-Code-Modulen

Neue JavaScript-Code-Module

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

NetUtil.jsm

  • Die asyncFetch()-Methode unterstützt nun die Angabe der Eingabequelle als nsIInputStream.

Schnittstellenänderungen

  • Die nsIHttpChannelInternal-Schnittstelle verfügt über neue Attribute, die den 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 width- und height-Attribute des <canvas> Elements werden jetzt in IDL als unsignierte Ganzzahlen anstelle von signierten reflektiert (siehe HTMLCanvasElement).
  • Die nsIAppStartup2- und nsIAppStartup_MOZILLA_2_0-Schnittstellen wurden in die nsIAppStartup-Schnittstelle zusammengeführt.
  • Die nsIDocShell_MOZILLA_2_0_BRANCH-Schnittstelle wurde in die nsIDocShell-Schnittstelle zusammengeführt.
  • Die nsIFocusManager_MOZILLA_2_0_BRANCH-Schnittstelle wurde in die nsIFocusManager-Schnittstelle zusammengeführt.
  • Die nsIHTMLEditor_MOZILLA_2_0_BRANCH-Schnittstelle wurde in die nsIHTMLEditor-Schnittstelle zusammengeführt.

Neue Schnittstellen

Entfernte Schnittstellen

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

Debugging-Hilfen

JavaScript-API (SpiderMonkey)

Änderungen im Build-System

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

Siehe auch