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 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 Zeichensätze UTF-7 und UTF-32 entfernt. Weitere Informationen zu unterstützen Zeichensätzen finden Sie hier.
- Im Quirks-Modus werden leere
<map>
s nicht mehr zugunsten nicht-leerer übergangen. Siehe die Gecko-Hinweise zum<map>
-Element für Details. - Firefox Mobile auf Android unterstützt nun WOFF-Schriften für
@font-face
. - WebGL lädt keine Texturen mehr von anderen Domains als der Ursprungsdomain als Sicherheitsmaßnahme. HTTP-Zugriffskontrolle sollte in Zukunft hinzugefügt werden, um dies sicherer zu machen.
Canvas-Verbesserungen
- Der 2D-Zeichnungskontext des
<canvas>
unterstützt jetzt die Angabe einesImageData
-Objekts als Eingabe für die MethodecreateImageData()
. Dies erstellt ein neuesImageData
-Objekt mit denselben Abmessungen wie das angegebene Objekt, aber immer noch mit allen Pixeln, die auf transparentes Schwarz voreingestellt sind. Dies war bereits dokumentiert, aber nicht implementiert. - Das Angeben von nicht-endlichen Werten beim Hinzufügen von Farbverläufen über einen Aufruf der
addColorStop()
-Methode vonCanvasGradient
wirft jetzt korrektINDEX_SIZE_ERR
anstelle vonSYNTAX_ERR
. - Die Methode
toDataURL()
desHTMLCanvasElement
verwendet nun korrekt Kleinbuchstaben für den angegebenen MIME-Typ, bevor ein Vergleich 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()
handhaben negative Argumente nun 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.- Bei der Angabe von nicht-endlichen Werten beim Aufrufen von
createImageData()
wird nun korrekt eineNOT_SUPPORTED_ERR
-Ausnahme geworfen. createImageData()
undgetImageData()
geben nun korrekt mindestens ein Pixel Bilddaten zurück, wenn ein kleineres Rechteck als ein Pixel angegeben wird.- Wird ein negativer Radius beim Aufruf von
createRadialGradient()
angegeben, wird nun korrektINDEX_SIZE_ERR
geworfen. - Das Angeben eines
null
oderundefined
Bildes beim Aufruf voncreatePattern()
oderdrawImage()
führt nun korrekt zu einerTYPE_MISMATCH_ERR
-Ausnahme. - Ungültige Werte für
globalAlpha
werfen keineSYNTAX_ERR
-Ausnahme mehr; diese werden nun korrekt stillschweigend ignoriert. - Ungültige Werte beim Aufruf von
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
oderarc()
werfen keine Ausnahme mehr; diese Aufrufe werden nun korrekt stillschweigend ignoriert. - Die Einstellung eines ungültigen Wertes für
shadowOffsetX
,shadowOffsetY
odershadowBlur
wird nun stillschweigend ignoriert. - Die Einstellung eines ungültigen Wertes für
rotate
oderscale
wird jetzt 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 "Wort"-Auswahl keine nachfolgenden Leerzeichen mehr einschließt; dies macht sie konsistenter über verschiedene Plattformen hinweg und entspricht dem Verhalten der WebKit-Implementierung. - Die Methoden
setTimeout()
undsetTimeout()
sind jetzt so begrenzt, dass sie nicht mehr als ein Timeout pro Sekunde in inaktiven Tabs senden. Zusätzlich wird nun verschachtelten Timeouts der kleinste von der HTML5-Spezifikation erlaubte Wert von 4 ms auferlegt (anstelle der früheren 10 ms). - Ähnlich dazu wird die Methode
Window.setInterval()
undWorkerGlobalScope.setInterval()
ebenfalls auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs begrenzt. XMLHttpRequest
unterstützt jetzt dasloadend
-Event für Fortschritts-Listener. Dieses wird gesendet, nachdem ein Transfer beendet ist (d.h. nach demabort
-,error
- oderload
-Ereignis). Sie können dies verwenden, um alle Vorgänge zu behandeln, die unabhängig vom Erfolg oder Misserfolg eines Transfers durchgeführt werden müssen.- Die
slice()
-Methode derBlob
- und damit derFile
-Objekte wurde entfernt und durch eine neue, vorgeschlagene Syntax ersetzt, die es konsistenter mit den MethodenArray.slice()
undString.slice()
in JavaScript macht. Diese Methode heißt jetztmozSlice()
. - Der Wert von
Navigator.language
wird nun ermittelt, indem der Wert desAccept-Language
HTTP-Headers betrachtet wird. - Die Eigenschaft
Element.prefix
ist nun schreibgeschützt, wie es von der DOM-Spezifikation gefordert wird. - Das
HTMLVideoElement
unterstützt nun experimentelle Eigenschaften, um Informationen über Videostatistiken 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 Zusammenarbeit mit dem WebKit-Team durchgeführt, um Kompatibilität zu gewährleisten (siehe WebKit bug 28285). Dieses Feature existierte schon lange, 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 zuvor 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 werden, dürfen Skripten in einer Sandbox nicht mehr ausgesetzt werden.
- Der JSON-Parser wurde neu geschrieben, um eine verbesserte Geschwindigkeit und Konformität zu erreichen. Dies umfasst auch eine Verbesserung für Firefox bug 572279.
SVG
- Das SVG-Attribut
class
kann nun animiert werden. - Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind jetzt indizierbar und können wie Arrays angesprochen werden; zusätzlich haben sie eine
length
-Eigenschaft, die die Anzahl der Elemente in den Listen angibt:SVGLengthList
,SVGNumberList
,SVGPathSegList
undSVGPointList
.
HTTP
- Firefox sendet nicht mehr den
Keep-Alive
HTTP-Header; 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 in der persistenten Verbindungspool zu sein; anstatt den Pool als FIFO-Warteschlange zu behandeln, versucht Necko nun, den Pool so zu sortieren, dass Verbindungen mit dem größten Congestion Window (CWND) zuerst folgen. Dies kann die Rundreisezeit (RTT) von HTTP-Transaktionen verkürzen, indem häufig die Notwendigkeit vermieden wird, Verbindungen zu vergrößern.
- Firefox behandelt nun die
Content-Disposition
HTTP-Response-Header effektiver, wenn sowohl die Parameterfilename
als auchfilename*
bereitgestellt werden; es werden alle bereitgestellten Namen durchgesehen, wobei derfilename*
-Parameter verwendet wird, falls einer verfügbar ist, selbst wenn zuerst einfilename
-Parameter enthalten ist. Zuvor wurde der erste übereinstimmende Parameter verwendet, wodurch ein geeigneterer Name möglicherweise nicht verwendet wurde. Siehe Firefox bug 588781.
MathML
- Unterstützung für verzierte Operatoren
Entwicklerwerkzeuge
- Das Web-Konsolen-Objekt
Console
hat nun einedebug()
-Methode, die ein 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 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 größeren Firefox-Versionen. Siehe Binärkomponenten für Details.
Ä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 nun die Angabe der Eingabequelle alsnsIInputStream
.
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 zu Debugging-Zwecken bereitgestellt. - Die Attribute
width
undheight
des<canvas>
-Elements werden jetzt in IDL als vorzeichenlose Ganzzahlen anstelle von signierten Ganzzahlen 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 vorzeichenlose Ganzzahlen zu konvertieren.
Änderungen im Build-System
- Sie können jetzt Firefox ohne eine
mozconfig
-Datei bauen; die--enable-application
Einstellung hat jetzt standardmäßig den Wert "browser". Nach dem Herunterladen oder Klonen des Codes können Sieconfigure && make
(odermake -f client.mk
) ausführen, um Firefox zu bauen.