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 nun 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 übersprungen. - Firefox Mobile auf Android unterstützt jetzt WOFF-Schriftarten für
@font-face
. - Aus Sicherheitsgründen lädt WebGL keine Texturen mehr von anderen Domains als der Ursprungsdomain. HTTP-Zugriffskontrolle Unterstützung soll in Zukunft eingeführt werden, um dies sicherer zu ermöglichen.
Canvas-Verbesserungen
- Der 2D-Zeichnungskontext des
<canvas>
unterstützt nun das Angeben einesImageData
Objekts als Eingabe für die MethodecreateImageData()
; dies erstellt ein neuesImageData
-Objekt, das mit den gleichen Abmessungen wie das angegebene Objekt initialisiert wird, jedoch mit allen Pixeln in transparentem Schwarz. Dies war dokumentiert, aber nicht umgesetzt. - Das Angeben von nicht-endlichen Werten beim Hinzufügen von Farbverläufen durch einen Aufruf der
addColorStop()
Methode vonCanvasGradient
wirft nun korrektINDEX_SIZE_ERR
anstelle vonSYNTAX_ERR
. - Die Methode
toDataURL()
vonHTMLCanvasElement
wandelt nun die angegebene MIME-Type korrekt in Kleinbuchstaben vor dem Abgleichen um. 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()
verarbeiten nun negative Argumente gemäß der Spezifikation, indem sie das Rechteck um die entsprechende Achse spiegeln. Wir benötigen einen Artikel über CSS-Sizing und wie das funktioniert.- Nicht-endliche Werte beim Aufrufen von
createImageData()
werfen nun korrekt eineNOT_SUPPORTED_ERR
Ausnahme. createImageData()
undgetImageData()
geben nun korrekt mindestens ein Pixel Bilddaten zurück, wenn ein kleineres Rechteck als ein Pixel angegeben wird.- Das Angeben eines negativen Radius bei
createRadialGradient()
wirft nun korrektINDEX_SIZE_ERR
. - Ein
null
oderundefined
Bild beicreatePattern()
oderdrawImage()
anzugeben, wirft nun korrekt eineTYPE_MISMATCH_ERR
Ausnahme. - Ungültige Werte für
globalAlpha
werfen keineSYNTAX_ERR
Ausnahme mehr; sie werden nun korrekt stillschweigend ignoriert. - Ungültige Werte bei
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
oderarc()
werfen 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
-moz-
Präfix.
DOM
- Die Methode
modify()
desSelection
Objekts wurde geändert, sodass die Granularität der "Wort"-Auswahl keine Nachlaufzeichen mehr einschließt; dies macht sie konsistenter über Plattformen hinweg und passt zum Verhalten von WebKits Implementierung. - Die Methoden
setTimeout()
undsetTimeout()
sind nun darauf beschränkt, nicht mehr als ein Timeout pro Sekunde in inaktiven Tabs zu senden. Zusätzlich wird jetzt auf verschachtelte Timeouts auf den kleinsten, von der HTML5-Spezifikation erlaubten Wert von 4 ms gegrenzt (anstelle der vorher 10 ms). - Ebenso wird die Methode
Window.setInterval()
undWorkerGlobalScope.setInterval()
nun darauf beschränkt, nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs zu senden. XMLHttpRequest
unterstützt jetzt dasloadend
Ereignis für Fortschritt-Listener. Dies wird gesendet, nachdem jeder Transfer abgeschlossen ist (d.h. nach demabort
,error
oderload
Ereignis). Sie können dies verwenden, um alle Aufgaben zu erledigen, die unabhängig vom Erfolg oder Misserfolg eines Transfers durchgeführt werden müssen.- Die Methode
slice()
derBlob
und dadurch auch derFile
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 vorerstmozSlice()
. - Der Wert von
Navigator.language
wird nun durch das Betrachten des Wertes desAccept-Language
HTTP-Headers bestimmt. - Die Eigenschaft
Element.prefix
ist nun schreibgeschützt, wie es die DOM-Spezifikation erfordert. - Das
HTMLVideoElement
unterstützt jetzt experimentelle Eigenschaften, um Informationen über Video-Darstellungsstatistiken wie Bildraten zu erhalten.
JavaScript
- Reguläre Ausdrücke können nicht mehr aufgerufen werden, als wären sie Funktionen; diese Änderung wurde in Zusammenarbeit mit dem WebKit-Team vorgenommen, um Kompatibilität sicherzustellen (siehe WebKit-Bug 28285). Diese Funktion existierte schon lange, war aber nie dokumentiert (zumindest nicht hier auf MDC).
- Die Methode
Function.prototype.isGenerator()
wird nun unterstützt; damit können Sie bestimmen, ob eine Funktion ein Generator ist. - Die folgenden reservierten Wörter wurden zuvor nur in strict mode als reserviert behandelt; jetzt werden sie immer als reserviert betrachtet:
class
,enum
,export
,extends
,import
undsuper
. - DOM-Dokumente, die im Chrome-Code erstellt wurden, können nicht mehr auf gesandboxte Skripte zugreifen.
- Der JSON-Parser wurde neu geschrieben, um Geschwindigkeit und Konformität zu verbessern. Dazu gehört auch ein Fix für Firefox-Bug 572279.
SVG
- Das
class
SVG-Attribut kann nun animiert werden. - Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten repräsentieren, sind jetzt indexierbar 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
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 klüger mit der Wiederverwendung von Verbindungen im persistenten Verbindungspool umzugehen; anstatt den Pool als FIFO Warteschlange zu behandeln, versucht Necko nun, den Pool mit Verbindungen mit dem größten Stauwindow (CWND) zuerst zu sortieren. Dies kann die Round-Trip-Time (RTT) von HTTP-Transaktionen reduzieren, indem die Notwendigkeit, Fenster von Verbindungen zu vergrößern, vermieden wird.
- Firefox verarbeitet den
Content-Disposition
HTTP-Antwort-Header nun effektiver, wenn sowohl diefilename
als auch diefilename*
Parameter angegeben sind; es schaut durch alle bereitgestellten Namen und nutzt denfilename*
Parameter, wenn einer verfügbar ist, selbst wenn einfilename
Parameter zuerst enthalten ist. Bisher wurde der erste passende Parameter verwendet, was verhinderte, dass ein passenderer Name verwendet wurde. Siehe Firefox-Bug 588781.
MathML
- Unterstützung für verzierte Operatoren
Entwickler-Tools
- Das
Console
-Objekt der Web-Konsole hat nun einedebug()
Methode, die ein Alias für dielog()
Methode ist; dies verbessert die Kompatibilität mit bestimmten existierenden 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 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. 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 mit Schlüssel/Wert-Paaren.
NetUtil.jsm
- Die Methode
asyncFetch()
unterstützt nun das Angeben der Eingabequelle alsnsIInputStream
.
Schnittstellenänderungen
- Die
nsIHttpChannelInternal
Schnittstelle hat neue Attribute, die den Zugriff auf Informationen über die Endpunkte der Kanäle und deren Adressen und Ports bieten. Diese Informationen werden hauptsächlich zu Debugging-Zwecken bereitgestellt. - Die
width
undheight
Attribute des<canvas>
Elements sind nun in IDL als vorzeichenlose Ganzzahlen anstelle von signierten reflektiert (sieheHTMLCanvasElement
). - Die
nsIAppStartup2
undnsIAppStartup_MOZILLA_2_0
Schnittstellen wurden 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
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 wird nun standardmäßig auf "browser" gesetzt. Nach dem Herunterladen oder Klonen des Codes, können Sieconfigure && make
(odermake -f client.mk
) nutzen, um Firefox zu bauen.