Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Firefox 5 Versionshinweise für Entwickler

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

Änderungen für Webentwickler

HTML

Verbesserungen am Canvas

  • Der 2D-Zeichenkontext des <canvas>-Elements unterstützt nun die Angabe eines ImageData-Objekts als Eingabe für die Methode createImageData(); dies erstellt ein neues ImageData-Objekt, das mit denselben Abmessungen wie das angegebene Objekt initialisiert wird, jedoch mit allen Pixeln auf transparentes Schwarz voreingestellt. Dies war bereits als implementiert dokumentiert, war es jedoch nicht.
  • Die Angabe nicht-finiter Werte beim Hinzufügen von Farbstopps durch einen Aufruf der Methode addColorStop() der CanvasGradient wirft nun korrekt INDEX_SIZE_ERR anstelle von SYNTAX_ERR.
  • Die Methode toDataURL() des HTMLCanvasElement wandelt den angegebenen MIME-Typ nun korrekt in Kleinbuchstaben um, bevor er abgeglichen wird.
  • 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 negative Argumente nun gemäß der Spezifikation, indem das Rechteck um die entsprechende Achse gespiegelt wird. Wir benötigen einen Artikel über CSS-Größenanpassung und wie dies funktioniert.
  • Die Angabe nicht-finiter Werte bei Aufruf von createImageData() wirft nun korrekt eine NOT_SUPPORTED_ERR-Ausnahme.
  • createImageData() und getImageData() geben nun korrekt mindestens einen Pixel Bilddaten zurück, wenn ein Rechteck kleiner als ein Pixel angegeben wird.
  • Die Angabe eines negativen Radius bei Aufruf von createRadialGradient() wirft nun korrekt INDEX_SIZE_ERR.
  • Die Angabe eines null oder undefined Bildes bei Aufruf von createPattern() oder drawImage() wirft nun korrekt eine TYPE_MISMATCH_ERR-Ausnahme.
  • Ungültige Werte für globalAlpha werfen nicht mehr eine SYNTAX_ERR-Ausnahme; diese werden nun korrekt stillschweigend ignoriert.
  • Die Angabe ungültiger Werte bei Aufrufen von translate(), transform(), rect(), clearRect(), fillRect(), strokeRect(), lineTo(), moveTo(), quadraticCurveTo() oder arc() wirft keine Ausnahme mehr; diese Aufrufe werden nun korrekt stillschweigend ignoriert.
  • Die Einstellung des Wertes von shadowOffsetX, shadowOffsetY oder shadowBlur auf einen ungültigen Wert wird nun stillschweigend ignoriert.
  • Die Einstellung des Wertes von rotate oder scale auf einen ungültigen Wert wird nun stillschweigend ignoriert.

CSS

CSS-Animationen

Unterstützung für CSS-Animationen wurde hinzugefügt und verwendet vorerst das Präfix -moz-.

DOM

  • Die Methode modify() des Selection-Objekts wurde geändert, sodass die "Wort"-Auswahlgranularität keine nachgestellten Leerzeichen mehr einschließt; dadurch wird sie konsistenter über Plattformen hinweg und entspricht dem Verhalten der WebKit-Implementierung.
  • Die Methoden setTimeout() und setTimeout() sind nun so geregelt, dass sie nicht mehr als einmal pro Sekunde in inaktiven Tabs ausgeführt werden. Zusätzlich wird die Verschachtelung von Timeouts auf den kleinsten von der HTML5-Spezifikation erlaubten Wert begrenzt: 4 ms (anstatt der bisherigen 10 ms).
  • Ähnlich wird die Methode Window.setInterval() und WorkerGlobalScope.setInterval() auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs beschränkt.
  • XMLHttpRequest unterstützt nun das loadend-Ereignis für Fortschrittslistener. Dies wird nach jedem Enden eines Transfers gesendet (nach dem abort-, error- oder load-Ereignis). Sie können dies verwenden, um Aufgaben zu erledigen, die unabhängig vom Erfolg oder Misserfolg eines Transfers ausgeführt werden müssen.
  • Die Methode slice() der Blob- und damit auch 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 vorerst mozSlice() genannt.
  • Der Wert von Navigator.language wird nun ermittelt, indem der Wert des Accept-Language- HTTP-Headers betrachtet wird.
  • Die Eigenschaft Element.prefix ist nun schreibgeschützt, wie es die DOM-Spezifikation erfordert.
  • Das HTMLVideoElement unterstützt nun experimentelle Eigenschaften, um Informationen über Videoanzeigestatistiken wie Bildraten zu erhalten.

JavaScript

  • Reguläre Ausdrücke sind nicht mehr aufrufbar, als wären sie Funktionen; diese Änderung wurde zusammen mit dem WebKit-Team implementiert, um Kompatibilität zu gewährleisten (siehe WebKit-Bug 28285). Dieses Feature existierte schon lange, wurde aber nie dokumentiert (zumindest hier auf MDC nicht).
  • Die Methode Function.prototype.isGenerator() wird nun unterstützt; sie ermöglicht es, festzustellen, ob eine Funktion ein Generator ist.
  • Die folgenden reservierten Wörter wurden bisher nur im strikten Modus als reserviert behandelt; jetzt sind sie immer reserviert: class, enum, export, extends, import und super.
  • DOM-Dokumente, die im Chrome-Code erstellt wurden, dürfen nicht mehr den gesandboxten Skripten ausgesetzt werden.
  • Der JSON-Parser wurde umgeschrieben, um Geschwindigkeit und Konformität zu verbessern. Dies beinhaltet eine Korrektur für Firefox Bug 572279.

SVG

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

HTTP

  • Firefox sendet das Keep-Alive HTTP-Header nicht mehr; es war nicht korrekt formatiert und überflüssig, da wir ohnehin das Connection oder Proxy-Connection-Header mit dem Wert "keep-alive" gesendet haben.
  • Das HTTP-Transaktionsmodell wurde aktualisiert, um intelligenter mit dem Wiederverwenden von Verbindungen im Persistent-Verbindungspool umzugehen; statt den Pool wie eine FIFO-Warteschlange zu behandeln, versucht Necko nun, den Pool mit Verbindungen mit dem größten Kongestionsfenster (CWND) zuerst zu sortieren. Dies kann die Round-Trip Time (RTT) von HTTP-Transaktionen verringern, indem das Wachsen der Verbindungsfenster in vielen Fällen vermieden wird.
  • Firefox behandelt das Content-Disposition HTTP-Antwortheader effektiver, wenn sowohl die Parameter filename als auch filename* bereitgestellt werden; es durchsucht alle bereitgestellten Namen und verwendet den Parameter filename*, wenn einer verfügbar ist, selbst wenn zuerst ein filename-Parameter enthalten ist. Zuvor würde der erste übereinstimmende Parameter verwendet, was verhinderte, dass ein geeigneterer Name verwendet wird. Siehe Firefox Bug 588781.

MathML

Entwicklerwerkzeuge

  • Das Konsolenobjekt des Webkonsolen-Console hat nun eine debug()-Methode, die ein 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 zur Aktualisierung Ihres Add-ons für Firefox 5, siehe Aktualisieren von Add-ons für Firefox 5.

Hinweis: Firefox 5 erfordert, dass binäre Komponenten neu kompiliert werden, wie es bei allen Hauptversionen von Firefox der Fall ist. Einzelheiten finden Sie unter Binäre Schnittstellen.

Ä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 Methode asyncFetch() unterstützt jetzt die Angabe der Eingabequelle als nsIInputStream.

Schnittstellenänderungen

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

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 Buildsystem

  • Sie können nun Firefox ohne eine mozconfig-Datei bauen; die --enable-application Einstellung ist nun standardmäßig auf "browser" gesetzt. Nachdem Sie den Code heruntergeladen oder abgerufen haben, können Sie configure && make (oder make -f client.mk) aufrufen, um Firefox zu bauen.