Firefox 5 für Entwickler
Firefox 5, basierend auf Gecko 5.0, wurde am 21. Juni 2011 veröffentlicht. Dieser Artikel enthält Links zu Informationen über die Ä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 die HTML5-Spezifikation zu erfüllen, wurde die Unterstützung für die Zeichensätze UTF-7 und UTF-32 entfernt.
- Im Quirks-Modus werden leere
<map>
s bei der Zuordnung nicht länger zugunsten von nicht-leeren übersprungen. - Firefox Mobile auf Android unterstützt jetzt WOFF-Schriften für
@font-face
. - WebGL lädt keine Texturen mehr von anderen Domains als der Herkunfts-Domain als Sicherheitsmaßnahme. HTTP-Zugriffskontrolle-Unterstützung sollte bald hinzukommen, um dies sicherer zu gestalten.
Verbesserungen für Canvas
- Der 2D-Zeichnungskontext des
<canvas>
unterstützt jetzt die Angabe einesImageData
-Objekts als Eingabe für diecreateImageData()
-Methode; dies erstellt ein neuesImageData
-Objekt, das mit den gleichen Abmessungen wie das angegebene Objekt initialisiert ist, jedoch immer noch mit allen Pixeln auf transparentes Schwarz voreingestellt. Dies war bereits als implementiert dokumentiert, jedoch nicht umgesetzt. - Werden nicht-endliche Werte beim Hinzufügen von Farbverläufen über einen Aufruf der
CanvasGradient
-MethodeaddColorStop()
angegeben, wird jetzt korrektINDEX_SIZE_ERR
anstelle vonSYNTAX_ERR
geworfen. - Die Methode
toDataURL()
desHTMLCanvasElement
wandelt nun den angegebenen MIME-Typ vor der Übereinstimmung korrekt in Kleinbuchstaben um. getImageData()
akzeptiert jetzt korrekt Rechtecke, die über die Grenzen des Canvas hinausgehen; Pixel außerhalb des Canvas werden als transparentes Schwarz zurückgegeben.drawImage()
undcreateImageData()
behandeln negative Argumente nun gemäß der Spezifikation, indem sie das Rechteck um die entsprechende Achse spiegeln. Wir benötigen einen Artikel über CSS-Sizing und wie dies funktioniert.- Die Angabe von nicht-endlichen Werten beim Aufruf von
createImageData()
wirft nun korrekt eineNOT_SUPPORTED_ERR
-Ausnahme. createImageData()
undgetImageData()
geben jetzt korrekt mindestens ein Pixelbild zurück, wenn ein Rechteck kleiner als ein Pixel angegeben wird.- Beim Aufruf von
createRadialGradient()
mit einem negativen Radius wird nun korrektINDEX_SIZE_ERR
geworfen. - Die Angabe eines
null
oderundefined
Bildes beim Aufruf voncreatePattern()
oderdrawImage()
wirft nun korrekt eineTYPE_MISMATCH_ERR
-Ausnahme. - Die Angabe ungültiger Werte für
globalAlpha
wirft keineSYNTAX_ERR
-Ausnahme mehr; diese werden nun korrekt stillschweigend ignoriert. - Die Angabe ungültiger Werte bei den 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 eines ungültigen Wertes für
shadowOffsetX
,shadowOffsetY
odershadowBlur
wird nun stillschweigend ignoriert. - Das Setzen eines ungültigen Wertes für
rotate
oderscale
wird nun stillschweigend ignoriert.
CSS
- CSS-Animationen
-
Unterstützung für CSS-Animationen wurde hinzugefügt, vorerst mit dem Präfix
-moz-
.
DOM
- Die Methode
modify()
desSelection
-Objekts wurde geändert, sodass die Granularität der "word"-Auswahl keine nachfolgenden Leerzeichen mehr umfasst; dies macht es plattformübergreifend konsistenter und bringt es in Einklang mit dem Verhalten von WebKits Implementierung. - Die Methoden
setTimeout()
undsetTimeout()
werden nun auf maximal einen Timeout pro Sekunde in inaktiven Tabs geklammert. Darüber hinaus wird jetzt auch für verschachtelte Timeouts der kleinste vom HTML5-Standard erlaubte Wert eingehalten: 4 ms (statt der bisher 10 ms). - Ähnlich wird die Methode
Window.setInterval()
undWorkerGlobalScope.setInterval()
auf maximal ein Intervall pro Sekunde in inaktiven Tabs geklammert. XMLHttpRequest
unterstützt nun dasloadend
-Ereignis für Fortschritts-Listener. Dies wird gesendet, nachdem jede Übertragung abgeschlossen ist (d.h. nach dem Ereignisabort
,error
oderload
). Sie können dies verwenden, um alle Aufgaben zu erledigen, die unabhängig vom Erfolg oder Misserfolg einer Übertragung ausgeführt werden müssen.- Die Methode
slice()
der ObjekteBlob
und in Erweiterung auch der ObjekteFile
wurde entfernt und durch eine neue, vorgeschlagene Syntax ersetzt, die sie konsistenter mit den MethodenArray.slice()
undString.slice()
in JavaScript macht. Diese Methode trägt vorerst den NamenmozSlice()
. - Der Wert von
Navigator.language
wird nun durch den Wert desAccept-Language
HTTP-Headers bestimmt. - Die Eigenschaft
Element.prefix
ist nun schreibgeschützt, wie von der DOM-Spezifikation gefordert. - Das
HTMLVideoElement
unterstützt nun experimentelle Eigenschaften, um Informationen über Video-Rahmenraten wie Bildraten zu erhalten.
JavaScript
- Reguläre Ausdrücke sind nicht mehr aufrufbar, als wären sie Funktionen; diese Änderung wurde in Zusammenarbeit mit dem WebKit-Team vorgenommen, um Kompatibilität sicherzustellen (siehe WebKit bug 28285). Dieses Feature existierte schon lange, wurde jedoch 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 bisher nur im Strict-Modus als reserviert behandelt; jetzt werden sie immer als reserviert behandelt:
class
,enum
,export
,extends
,import
undsuper
. - DOM-Dokumente, die im Chrome-Code erstellt wurden, dürfen nicht mehr in Sandbox-Skripten offengelegt 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
-Attribut von SVG kann nun animiert werden.class
- Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind nun indizierbar und können wie Arrays zugegriffen werden; darüber hinaus haben sie eine
length
-Eigenschaft, die die Anzahl der Elemente in den Listen angibt:SVGLengthList
,SVGNumberList
,SVGPathSegList
undSVGPointList
.
HTTP
- Firefox sendet den HTTP-Header
Keep-Alive
nicht mehr; wir haben ihn nicht korrekt formatiert, und er war redundant, da wir sowieso den HeaderConnection
oderProxy-Connection
mit dem Wert "keep-alive" gesendet haben. - Das HTTP-Transaktionsmodell wurde aktualisiert, um intelligenter mit der Wiederverwendung von Verbindungen im persistenten Verbindungspool umzugehen; statt den Pool als FIFO-Queue 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 es in vielen Fällen das Wachstum der Verbindungsfenster vermeidet.
- Firefox behandelt den HTTP-Antwort-Header
Content-Disposition
nun effektiver, wenn sowohl die Parameterfilename
als auchfilename*
vorhanden sind; es durchsucht alle bereitgestellten Namen und verwendet den Parameterfilename*
, wenn einer verfügbar ist, auch wenn zuerst einfilename
-Parameter enthalten ist. Zuvor wurde der erste passende Parameter verwendet, wodurch verhindert wurde, dass ein geeigneterer Name verwendet wird. Siehe Firefox bug 588781.
MathML
- Unterstützung für verzierte Operatoren.
Entwicklerwerkzeuge
- Das Web Console
Console
-Objekt hat jetzt einedebug()
-Methode, die alias für seinelog()
-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 lesen Sie bitte Aktualisieren von Add-ons für Firefox 5.
Hinweis: Firefox 5 erfordert, dass binäre Komponenten neu kompiliert werden, ebenso wie alle Hauptversionen von Firefox. Weitere Einzelheiten finden Sie in den 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 aus Schlüssel/Wert-Paaren.
NetUtil.jsm
- Die Methode
asyncFetch()
unterstützt nun das Angeben der Eingabequelle alsnsIInputStream
.
Schnittstellenänderungen
- Die Schnittstelle
nsIHttpChannelInternal
hat neue Attribute, die den Zugriff auf Informationen über die Adressen und Ports der Kanalendpunkte ermöglichen. Diese Informationen werden hauptsächlich zu Debugging-Zwecken bereitgestellt. - Die Attribute
width
undheight
des<canvas>
-Elements werden nun in IDL als unsignierte Ganzzahlen anstelle von signierten 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-Ganzzahlen und unsignierte Ganzzahlen zu konvertieren.
Änderungen am Build-System
- Sie können jetzt Firefox ohne eine
mozconfig
-Datei bauen; die--enable-application
-Einstellung ist nun standardmäßig auf "browser" gesetzt. Nach dem Herunterladen oder Pullen des Codes können Sieconfigure && make
(odermake -f client.mk
) verwenden, um Firefox zu bauen.