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
- Alle HTML-Elemente haben jetzt das Attribut
accessKey
sowie die Methodenblur()
,click()
undfocus()
. Diese sind imHTMLElement
-Interface spezifiziert. - Um der HTML5-Spezifikation zu entsprechen, wurde die Unterstützung für die Zeichensätze UTF-7 und UTF-32 entfernt.
- Im Quirks-Modus werden leere
<map>
-Elemente nicht mehr zugunsten nicht leerer beim Matching übersprungen. Siehe die Gecko-Hinweise zum<map>
-Element für Details. - Firefox Mobile auf Android unterstützt jetzt WOFF-Schriftarten für
@font-face
. - Aus Sicherheitsgründen lädt WebGL keine Texturen mehr von Domains außer der ursprünglichen Domain. HTTP-Zugriffskontrolle-Unterstützung sollte in Zukunft verfügbar gemacht werden, um dies sicherer zu ermöglichen.
Verbesserungen der Canvas
- Der 2D-Zeichenkontext der
<canvas>
unterstützt jetzt die Angabe einesImageData
-Objekts als Eingabe für die MethodecreateImageData()
; dies erzeugt ein neuesImageData
-Objekt, das mit denselben Dimensionen wie das angegebene Objekt initialisiert ist, wobei alle Pixel jedoch weiterhin auf transparentes Schwarz voreingestellt sind. Dies war bereits als implementiert dokumentiert, aber nicht umgesetzt. - Die Angabe von nicht-finiten Werten beim Hinzufügen von Farbverläufen durch einen Aufruf der
addColorStop()
-Methode desCanvasGradient
löst jetzt korrektINDEX_SIZE_ERR
anstelle vonSYNTAX_ERR
aus. - Die Methode
toDataURL()
derHTMLCanvasElement
wandelt den angegebenen MIME-Typ jetzt korrekt in Kleinbuchstaben um, bevor er abgeglichen wird. getImageData()
akzeptiert jetzt korrekt Rechtecke, die über die Grenzen der Canvas hinausreichen; Pixel außerhalb der Canvas werden als transparentes Schwarz zurückgegeben.drawImage()
undcreateImageData()
gehen jetzt mit negativen Argumenten gemäß der Spezifikation um, indem das Rechteck um die entsprechende Achse gespiegelt wird. 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äß eineNOT_SUPPORTED_ERR
-Ausnahme aus. createImageData()
undgetImageData()
geben jetzt korrekt mindestens ein Pixel Bilddaten zurück, wenn ein Rechteck kleiner als ein Pixel angegeben ist.- Die Angabe eines negativen Radius beim Aufrufen von
createRadialGradient()
löst jetzt korrektINDEX_SIZE_ERR
aus. - Die Angabe eines
null
- oderundefined
-Bildes beim Aufrufen voncreatePattern()
oderdrawImage()
löst jetzt korrekt eineTYPE_MISMATCH_ERR
-Ausnahme aus. - Die Angabe ungültiger Werte für
globalAlpha
löst keineSYNTAX_ERR
-Ausnahme mehr aus; diese werden jetzt korrekt stillschweigend ignoriert. - Die Angabe ungültiger Werte beim Aufrufen von
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
oderarc()
löst keine Ausnahme mehr aus; diese Aufrufe werden jetzt korrekt stillschweigend ignoriert. - Das Setzen des Wertes von
shadowOffsetX
,shadowOffsetY
odershadowBlur
auf einen ungültigen Wert wird jetzt stillschweigend ignoriert. - Das Setzen des Wertes von
rotate
oderscale
auf einen ungültigen Wert wird jetzt stillschweigend ignoriert.
CSS
- CSS-Animationen
-
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 "word"-Granularität der Auswahl keine nachgestellten Leerzeichen mehr einschließt; dies macht es plattformübergreifend konsistenter und entspricht dem Verhalten der WebKit-Implementierung. - Die Methoden
setTimeout()
undsetTimeout()
sind jetzt so angepasst, dass sie in inaktiven Tabs nicht mehr als ein Timeout pro Sekunde senden. Außerdem werden verschachtelte Timeouts jetzt auf den kleinsten Wert eingeklammert, der von der HTML5-Spezifikation erlaubt ist: 4 ms (anstatt der bisher verwendeten 10 ms). - Ebenso werden die Methoden
Window.setInterval()
undWorkerGlobalScope.setInterval()
in inaktiven Tabs auf nicht mehr als ein Intervall pro Sekunde eingeklammert. XMLHttpRequest
unterstützt jetzt dasloadend
Ereignis für Fortschritts-Listener. Dieses wird gesendet, nachdem ein Transfer abgeschlossen ist (d.h. nach demabort
,error
oderload
Ereignis). Sie können dies verwenden, um Aufgaben zu behandeln, die unabhängig vom Erfolg oder Misserfolg eines Transfers durchgeführt werden müssen.- Die
slice()
-Methode derBlob
und, in der Erweiterung, derFile
-Objekte wurde entfernt und durch eine neue, vorgeschlagene Syntax ersetzt, die sie konsistenter mit denArray.slice()
undString.slice()
-Methoden in JavaScript macht. Diese Methode heißt vorerstmozSlice()
. - Der Wert von
Navigator.language
wird jetzt bestimmt, indem der Wert desAccept-Language
HTTP-Headers betrachtet wird. - Die Eigenschaft
Element.prefix
ist jetzt schreibgeschützt, wie von der DOM-Spezifikation gefordert. - Das
HTMLVideoElement
unterstützt jetzt experimentelle Eigenschaften, um Informationen über Video-Wiedergabe-Statistiken wie Bildraten zu erhalten.
JavaScript
- Reguläre Ausdrücke sind nicht länger aufrufbar, als wären sie Funktionen; diese Änderung wurde in Zusammenarbeit mit dem WebKit-Team vorgenommen, um die Kompatibilität zu gewährleisten (siehe WebKit bug 28285). Dieser Feature existierte schon lange, war 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 als reserviert behandelt, wenn sie im Strict-Modus verwendet wurden; jetzt werden sie immer als reserviert behandelt:
class
,enum
,export
,extends
,import
, undsuper
. - DOM-Dokumente, die im Chrome-Code erstellt wurden, können möglicherweise nicht mehr an sandboxed Scripts weitergegeben werden.
- Der JSON-Parser wurde für verbesserte Geschwindigkeit und Konformität neu geschrieben. Dies schließt eine Behebung für Firefox Bug 572279 ein.
SVG
- Das
class
SVG-Attribut kann jetzt animiert werden. - Die folgenden SVG-bezogenen DOM-Interfaces, die Listen von Objekten darstellen, sind jetzt indizierbar und können wie Arrays zugegriffen werden; zusätzlich haben sie eine
length
-Eigenschaft, die die Anzahl der Elemente in den Listen angibt:SVGLengthList
,SVGNumberList
,SVGPathSegList
undSVGPointList
.
HTTP
- Firefox sendet den
Keep-Alive
HTTP-Header nicht mehr; wir haben ihn nicht korrekt formatiert, und er war überflüssig, da wir auch denConnection
oderProxy-Connection
Header mit dem Wert "keep-alive" gesendet haben. - Das HTTP-Transaktionsmodell wurde aktualisiert, um intelligenter bei der Wiederverwendung von Verbindungen im persistenten Verbindungspool zu sein; anstatt den Pool als FIFO-Warteschlange zu behandeln, versucht Necko jetzt 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 Verbindungen-Fenster vermeidet.
- Firefox verarbeitet jetzt den
Content-Disposition
HTTP-Response-Header effektiver, wenn sowohl diefilename
als auch diefilename*
Parameter bereitgestellt werden; es werden alle bereitgestellten Namen durchgesehen und derfilename*
Parameter verwendet, wenn einer verfügbar ist, selbst wenn einfilename
Parameter zuerst enthalten ist. Zuvor wurde der erste übereinstimmende Parameter verwendet, was verhinderte, dass ein geeignetere Name verwendet werden konnte. Siehe Firefox Bug 588781.
MathML
- Unterstützung für verschmückte Operatoren
Entwicklerwerkzeuge
- Das Webkonsole
Console
-Objekt hat jetzt einedebug()
-Methode, die ein Alias für dielog()
-Methode ist; dies verbessert die Kompatibilität mit bestimmten bestehenden Webseiten.
Änderungen für Mozilla- und Add-on-Entwickler
Für einen Leitfaden zur Aktualisierung Ihres Add-ons für Firefox 5, siehe Aktualisierung 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. Siehe Binäre Schnittstellen für Details.
Änderungen an JavaScript-Code-Modulen
Neue JavaScript-Code-Module
- Das Code-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 jetzt die Angabe der Eingabequelle alsnsIInputStream
.
Schnittstellenänderungen
- Die Schnittstelle
nsIHttpChannelInternal
hat neue Attribute, die Zugang zu Informationen über die Adressen und Ports der Endpunkte der Kanäle gewähren. Diese Informationen werden hauptsächlich für Debugging-Zwecke bereitgestellt. - Die Attribute
width
undheight
des<canvas>
-Elements werden jetzt im IDL als unsigned Integers anstelle von signed Integers reflektiert (sieheHTMLCanvasElement
). - Die Schnittstellen
nsIAppStartup2
undnsIAppStartup_MOZILLA_2_0
wurden in diensIAppStartup
-Schnittstelle zusammengeführt. - Die Schnittstelle
nsIDocShell_MOZILLA_2_0_BRANCH
wurde in diensIDocShell
-Schnittstelle zusammengeführt. - Die Schnittstelle
nsIFocusManager_MOZILLA_2_0_BRANCH
wurde in diensIFocusManager
-Schnittstelle zusammengeführt. - Die Schnittstelle
nsIHTMLEditor_MOZILLA_2_0_BRANCH
wurde in diensIHTMLEditor
-Schnittstelle zusammengeführt.
Neue Schnittstellen
nsIDOMAnimationEvent
hinzugefügt.AnimationEvent
Entfernte Schnittstellen
Die folgenden Schnittstellen waren Implementierungsdetails, die nicht mehr benötigt werden:
nsICiter
(siehe Firefox Bug 633066)nsIDOM3Document
(siehe Firefox Bug 639849)nsIFIXptrEvaluator
nsISelectElement
(siehe Firefox Bug 619996)
Debugging-Hilfen
- Der neue
DebugOnly<T>
Helfer ermöglicht es, Variablen nur fürDEBUG
-Builds zu deklarieren.
JavaScript-API (SpiderMonkey)
JS_DoubleToInt32()
undJS_DoubleToUint32()
wurden hinzugefügt, umjsdouble
-Werte in C-Integer und unsigned Integers zu konvertieren.
Änderungen im Build-System
- Sie können Firefox jetzt ohne eine
mozconfig
-Datei bauen; die--enable-application
-Einstellung ist jetzt standardmäßig auf "browser" gesetzt. Nach dem Herunterladen oder Klonen des Codes können Sieconfigure && make
(odermake -f client.mk
) verwenden, um Firefox zu bauen.