Versionshinweise für Entwickler zu Firefox 5
Firefox 5, basierend auf Gecko 5.0, wurde am 21. Juni 2011 veröffentlicht. Dieser Artikel enthält Links zu Informationen über Änderungen, die Entwickler in dieser Version betreffen.
Änderungen für Webentwickler
>HTML
- Alle HTML-Elemente verfügen nun über das
accessKey-Attribut sowie die Methodenblur(),click()undfocus(). Diese sind in derHTMLElement-Schnittstelle spezifiziert. - Um der HTML5-Spezifikation zu entsprechen, wurde die Unterstützung für die UTF-7- und UTF-32-Zeichensätze entfernt.
- Im Quirks-Modus werden leere
<map>s nicht mehr zugunsten von nicht-leeren Elementen übersprungen, wenn sie abgeglichen werden. - Firefox Mobile auf Android unterstützt jetzt WOFF-Schriften für
@font-face. - WebGL lädt keine Texturen mehr von anderen Domains als der Ursprungsdomain als Sicherheitsmaßnahme. HTTP-Zugriffskontrolle wird in Zukunft erwartet, um dies sicherer zu ermöglichen.
Verbesserungen am Canvas
- Der
<canvas>2D-Zeichnungskontext unterstützt nun die Angabe einesImageData-Objekts als Eingabe für diecreateImageData()-Methode; dies erstellt ein neuesImageData-Objekt, das mit denselben Dimensionen wie das angegebene Objekt initialisiert wird, jedoch mit allen Pixeln als transparentes Schwarz voreingestellt. Dies war bereits dokumentiert, aber noch nicht implementiert. - Das Angeben von unendlichen Werten beim Hinzufügen von Farbstopps durch einen Aufruf der
CanvasGradient-MethodeaddColorStop()wirft jetzt korrektINDEX_SIZE_ERRanstelle vonSYNTAX_ERR. - Die
HTMLCanvasElement-MethodetoDataURL()konvertiert jetzt die angegebenen MIME-Typen korrekt in Kleinbuchstaben, bevor ein Abgleich erfolgt. getImageData()akzeptiert nun korrekt Rechtecke, die über die Grenzen der Leinwand hinausgehen; Pixel außerhalb der Leinwand werden als transparentes Schwarz zurückgegeben.drawImage()undcreateImageData()behandeln jetzt negative Argumente gemäß der Spezifikation, indem sie das Rechteck um die entsprechende Achse spiegeln. Wir benötigen einen Artikel über CSS-Größen und wie dies funktioniert.- Das Angeben von unendlichen Werten beim Aufrufen von
createImageData()wirft nun korrekt eineNOT_SUPPORTED_ERR-Ausnahme. createImageData()undgetImageData()geben jetzt korrekt mindestens einen Pixelbildwert zurück, wenn ein Rechteck kleiner als ein Pixel angegeben wird.- Beim Aufrufen von
createRadialGradient()wirft das Angeben eines negativen Radius nun korrektINDEX_SIZE_ERR. - Das Angeben eines
null- oderundefined-Bildes beim Aufrufen voncreatePattern()oderdrawImage()wirft nun korrekt eineTYPE_MISMATCH_ERR-Ausnahme. - Das Angeben ungültiger Werte für
globalAlphawirft keineSYNTAX_ERR-Ausnahme mehr; diese werden jetzt korrekt stillschweigend ignoriert. - Das Angeben ungültiger Werte beim Aufrufen von
translate(),transform(),rect(),clearRect(),fillRect(),strokeRect(),lineTo(),moveTo(),quadraticCurveTo()oderarc()wirft keine Ausnahme mehr; diese Aufrufe werden nun korrekt stillschweigend ignoriert. - Das Setzen ungültiger Werte für
shadowOffsetX,shadowOffsetYodershadowBlurwird jetzt stillschweigend ignoriert. - Das Setzen ungültiger Werte für
rotateoderscalewird jetzt stillschweigend ignoriert.
CSS
- CSS-Animationen
-
Die Unterstützung für CSS-Animationen wurde hinzugefügt, vorerst mit dem
-moz-Präfix.
DOM
- Die Methode
modify()desSelection-Objekts wurde so geändert, dass die Granularität der "Wort"-Auswahl keine Leerzeichen mehr am Ende einbezieht; dies macht es konsistenter auf verschiedenen Plattformen und entspricht der Implementierung von WebKit. - Die Methoden
setTimeout()undsetTimeout()werden jetzt so eingestellt, dass sie in inaktiven Tabs nicht mehr als einmal pro Sekunde ausgeführt werden. Zusätzlich werden verschachtelte Timeouts nun auf den kleinsten Wert, der von der HTML5-Spezifikation erlaubt ist, von 4 ms (anstatt der vorherigen 10 ms) geklemmt. - Ebenso wird die Methode
Window.setInterval()undWorkerGlobalScope.setInterval()auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs geklemmt. XMLHttpRequestunterstützt jetzt dasloadend-Ereignis für Fortschrittslistener. Dieses wird nach dem Abschluss eines Transfers gesendet (das heißt nach demabort,erroroderload-Ereignis). Sie können dies nutzen, um Aufgaben zu handhaben, die unabhängig vom Erfolg oder Misserfolg eines Transfers durchgeführt werden müssen.- Die Methode
slice()derBlob- und in der Verlängerung dieFile-Objekte wurde entfernt und durch eine neue, vorgeschlagene Syntax ersetzt, die sie konsistenter mit den MethodenArray.slice()undString.slice()in JavaScript macht. Diese Methode heißt vorläufigmozSlice(). - Der Wert von
Navigator.languagewird jetzt durch den Wert desAccept-LanguageHTTP-Headers bestimmt. - Die Eigenschaft
Element.prefixist nun schreibgeschützt, wie es von der DOM-Spezifikation gefordert ist. - Das
HTMLVideoElementunterstützt jetzt experimentelle Eigenschaften, um Informationen zu Videowiedergabestatistiken wie Bildraten zu erhalten.
JavaScript
- Reguläre Ausdrücke sind nicht mehr aufrufbar, als ob sie Funktionen wären; diese Änderung wurde in Abstimmung mit dem WebKit-Team durchgeführt, um die Kompatibilität sicherzustellen (siehe WebKit Fehler 28285). Diese Funktion existierte lange Zeit, wurde aber 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 bislang nur im strengen Modus als reserviert behandelt; jetzt werden sie immer als reserviert behandelt:
class,enum,export,extends,importundsuper. - DOM-Dokumente, die im Chrome-Code erstellt wurden, dürfen nicht mehr an gesandboxte Skripte weitergegeben werden.
- Der JSON-Parser wurde neu geschrieben, um die Geschwindigkeit und Konformität zu verbessern. Dies schließt eine Korrektur für Firefox Fehler 572279 ein.
SVG
- Das
classSVG-Attribut kann jetzt animiert werden. - Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind jetzt indizierbar und können wie Arrays aufgerufen werden; außerdem haben sie eine
length-Eigenschaft, die die Anzahl der Elemente in den Listen angibt:SVGLengthList,SVGNumberList,SVGPathSegListundSVGPointList.
HTTP
- Firefox sendet den
Keep-AliveHTTP-Header nicht mehr; wir haben ihn nicht korrekt formatiert, und er war redundant, da wir auch denConnection- oderProxy-Connection-Header mit dem Wert "keep-alive" gesendet haben. - Das HTTP-Transaktionsmodell wurde aktualisiert, um intelligenter beim Wiederverwenden von Verbindungen im persistenten Verbindungspool zu sein; anstatt den Pool als FIFO-Warteschlange 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 in vielen Fällen das Wachstum der Verbindungsfenster vermieden wird.
- Firefox handhabt den
Content-DispositionHTTP-Antwort-Header jetzt effizienter, wenn sowohl die Parameterfilenameals auchfilename*bereitgestellt werden; es durchsucht alle bereitgestellten Namen und verwendet denfilename*-Parameter, wenn einer verfügbar ist, selbst wenn einfilename-Parameter zuerst enthalten ist. Zuvor wurde der erste passende Parameter verwendet, was verhinderte, dass ein geeigneterer Name verwendet wurde. Siehe Firefox Fehler 588781.
MathML
- Unterstützung für verzierte Operatoren
Entwickler-Tools
- Das
Console-Objekt der Webkonsole verfügt jetzt über einedebug()-Methode, die ein Alias für ihrelog()-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, siehe bitte Add-Ons für Firefox 5 aktualisieren.
Hinweis: Firefox 5 erfordert, dass Binärkomponenten neu kompiliert werden, ebenso wie alle Hauptversionen von Firefox. Einzelheiten finden Sie unter 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 von Schlüssel/Wert-Paaren.
NetUtil.jsm
- Die
asyncFetch()-Methode unterstützt jetzt die Angabe der Eingabequelle alsnsIInputStream.
Schnittstellenänderungen
- Die
nsIHttpChannelInternal-Schnittstelle hat neue Attribute, die Zugang zu Informationen über die Adressen und Ports der Endpunkte der Kanäle bieten. Diese Informationen sind in erster Linie für Debugging-Zwecke vorgesehen. - Die Attribute
widthundheightdes<canvas>-Elements werden jetzt im IDL als unsigned Integer anstelle von signed Integern widergespiegelt (sieheHTMLCanvasElement). - Die Schnittstellen
nsIAppStartup2undnsIAppStartup_MOZILLA_2_0wurden in diensIAppStartup-Schnittstelle zusammengeführt. - Die
nsIDocShell_MOZILLA_2_0_BRANCH-Schnittstelle wurde in diensIDocShell-Schnittstelle zusammengeführt. - Die
nsIFocusManager_MOZILLA_2_0_BRANCH-Schnittstelle wurde in diensIFocusManager-Schnittstelle zusammengeführt. - Die
nsIHTMLEditor_MOZILLA_2_0_BRANCH-Schnittstelle wurde in diensIHTMLEditor-Schnittstelle zusammengeführt.
Neue Schnittstellen
nsIDOMAnimationEventhinzugefügt.AnimationEvent
Entfernte Schnittstellen
Die folgenden Schnittstellen waren Implementierungsdetails, die nicht mehr benötigt werden:
nsICiter(siehe Firefox Fehler 633066)nsIDOM3Document(siehe Firefox Fehler 639849)nsIFIXptrEvaluatornsISelectElement(siehe Firefox Fehler 619996)
Debugging-Hilfen
- Der neue
DebugOnly<T>-Helfer ermöglicht das Deklarieren von Variablen nur fürDEBUG-Builds.
JavaScript-API (SpiderMonkey)
JS_DoubleToInt32()undJS_DoubleToUint32()wurden hinzugefügt, umjsdouble-Werte in C-Integer und unsigned Integer zu konvertieren.
Änderungen am Build-System
- Sie können jetzt Firefox ohne eine
mozconfig-Datei bauen; die--enable-application-Einstellung ist jetzt standardmäßig auf "browser" gesetzt. Nach dem Abrufen oder Herunterladen des Codes können Sieconfigure && make(odermake -f client.mk) verwenden, um Firefox zu bauen.