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
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.
- Im Quirks-Modus werden leere
<map>
s nicht mehr zugunsten von nicht-leeren übersprungen, wenn eine Übereinstimmung erfolgt. Siehe die Gecko-Notizen zum<map>
-Element für Details. - Firefox Mobile auf Android unterstützt jetzt WOFF-Schriftarten für
@font-face
. - WebGL lädt keine Texturen mehr von anderen Domains als der Ursprungsdomäne als Sicherheitsmaßnahme. HTTP-Zugriffskontrolle-Unterstützung sollte in naher Zukunft kommen, um dies sicherer zu machen.
Canvas-Verbesserungen
- Der 2D-Zeichnungskontext des
<canvas>
unterstützt jetzt das Angeben einesImageData
-Objekts als Eingabe für diecreateImageData()
-Methode; dies erstellt ein neuesImageData
-Objekt mit denselben Dimensionen wie das angegebene Objekt, jedoch immer noch mit allen Pixeln auf transparentes Schwarz voreingestellt. Dies war dokumentiert, wurde aber nicht umgesetzt. - Das Angeben nicht-finiten Werten beim Hinzufügen von Farbunterbrechungen durch einen Aufruf der
CanvasGradient
-MethodeaddColorStop()
wirft jetzt korrektINDEX_SIZE_ERR
stattSYNTAX_ERR
. - Die
HTMLCanvasElement
-MethodetoDataURL()
verwendet jetzt korrekt Kleinbuchstaben für den angegebenen MIME-Typ vor dem Abgleich. getImageData()
akzeptiert nun korrekt Rechtecke, die über die Grenzen des Canvas hinausgehen; Pixel außerhalb des Canvas werden als transparentes Schwarz zurückgegeben.drawImage()
undcreateImageData()
behandeln jetzt negative Argumente gemäß der Spezifikation, indem das Rechteck um die geeignete Achse gespiegelt wird. Wir benötigen einen Artikel über CSS-Größenanpassung und wie dies funktioniert.- Das Angeben nicht-finiten Werten beim Aufruf von
createImageData()
wirft jetzt richtig eineNOT_SUPPORTED_ERR
-Ausnahme. createImageData()
undgetImageData()
geben nun korrekt mindestens ein Pixel Bilddaten zurück, wenn ein Rechteck kleiner als ein Pixel angegeben wird.- Das Angeben eines negativen Radius beim Aufruf von
createRadialGradient()
wirft jetzt korrektINDEX_SIZE_ERR
. - Das Angeben eines
null
- oderundefined
-Bildes beim Aufruf voncreatePattern()
oderdrawImage()
wirft jetzt korrekt eineTYPE_MISMATCH_ERR
-Ausnahme. - Das Angeben ungültiger Werte für
globalAlpha
wirft keineSYNTAX_ERR
-Ausnahme mehr; diese werden jetzt korrekt stillschweigend ignoriert. - Das Angeben ungültiger Werte beim Aufruf von
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
oderarc()
wirft keine Ausnahme mehr; diese Aufrufe werden jetzt korrekt stillschweigend ignoriert. - Das Festlegen des Wertes von
shadowOffsetX
,shadowOffsetY
odershadowBlur
auf einen ungültigen Wert wird jetzt stillschweigend ignoriert. - Das Festlegen 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, derzeit mit dem
-moz-
-Präfix.
- Unterstützung für CSS-Animationen wurde hinzugefügt, derzeit mit dem
DOM
- Die Methode
modify()
desSelection
-Objekts wurde so geändert, dass die Granularität der Wortauswahl keine nachfolgenden Leerzeichen mehr einschließt; dies macht sie plattformübergreifend konsistenter und entspricht dem Verhalten der WebKit-Implementierung. - Die Methoden
setTimeout()
undsetTimeout()
sind jetzt begrenzt, um nicht mehr als ein Timeout pro Sekunde in inaktiven Tabs zu senden. Außerdem sind verschachtelte Timeouts jetzt auf den kleinsten Wert begrenzt, der von der HTML5-Spezifikation erlaubt ist: 4 ms (statt der früheren 10 ms). - Ähnlich sind die Methoden
Window.setInterval()
undWorkerGlobalScope.setInterval()
jetzt auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs begrenzt. XMLHttpRequest
unterstützt jetzt dasloadend
-Ereignis für Fortschitts-Listener. Dieses wird nach jedem Übertragungsende gesendet (d. h. nach demabort
-,error
- oderload
-Ereignis). Sie können dies verwenden, um alle Aufgaben zu erledigen, die unabhängig vom Erfolg oder Misserfolg einer Übertragung durchgeführt werden müssen.- Die
slice()
-Methode der [Blob
]- und dadurch der [File
]-Objekte wurde entfernt und durch eine neue, vorgeschlagene Syntax ersetzt, die sie konsistenter mit den MethodenArray.slice()
undString.slice()
in JavaScript macht. Diese Methode wird momentanmozSlice()
genannt. - 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 es von der DOM-Spezifikation gefordert wird. - Das
HTMLVideoElement
unterstützt jetzt experimentelle Eigenschaften, um Informationen über Videomalanzeigen wie Bildraten zu erhalten.
JavaScript
- Reguläre Ausdrücke sind nicht mehr aufrufbar, als ob sie Funktionen wären; diese Änderung wurde in Zusammenarbeit mit dem WebKit-Team vorgenommen, um die Kompatibilität zu gewährleisten (siehe Webkit-Fehler 28285). Diese Funktion existierte schon lange, war jedoch nie dokumentiert worden (zumindest nicht hier auf MDC).
- Die
Function.prototype.isGenerator()
-Methode wird jetzt unterstützt; damit können Sie feststellen, ob eine Funktion ein Generator ist. - Die folgenden reservierten Wörter wurden zuvor nur im strikten Modus als reserviert betrachtet; jetzt werden sie immer als reserviert betrachtet:
class
,enum
,export
,extends
,import
undsuper
. - DOM-Dokumente, die im Chrome-Code erstellt werden, dürfen nicht mehr an gesandboxte Skripte weitergegeben werden.
- Der JSON-Parser wurde neu geschrieben für verbesserte Geschwindigkeit und Konformität. Dies schließt einen Fix für Firefox-Fehler 572279 ein.
SVG
- Das
class
-SVG-Attribut kann jetzt animiert werden. - Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind jetzt indexierbar und können wie Arrays abgefragt werden; zudem haben sie eine
length
-Eigenschaft, die die Anzahl der Einträge in den Listen angibt:SVGLengthList
,SVGNumberList
,SVGPathSegList
undSVGPointList
.
HTTP
- Firefox sendet den
Keep-Alive
-HTTP-Header nicht mehr; wir formatierten ihn nicht korrekt, und er war redundant, da wir ohnehin denConnection
oderProxy-Connection
-Header mit dem Wert "keep-alive" versendeten. - Das HTTP-Transaktionsmodell wurde aktualisiert, um beim erneuten Verwenden von Verbindungen im persistenten Verbindungspool intelligenter zu agieren; anstatt den Pool als FIFO-Warteschlange zu behandeln, versucht Necko, den Pool so zu sortieren, dass Verbindungen mit dem größten congestion window (CWND) zuerst genutzt werden. Dies kann die Round-Trip-Time (RTT) von HTTP-Transaktionen reduzieren, indem in vielen Fällen das Wachsen der Verbindungsfenster vermieden wird.
- Firefox behandelt jetzt den
Content-Disposition
-HTTP-Response-Header effektiver, wenn sowohlfilename
als auchfilename*
-Parameter vorhanden sind; es prüft alle bereitgestellten Namen und verwendet denfilename*
-Parameter, wenn einer verfügbar ist, sogar wenn einfilename
-Parameter zuerst angegeben wird. Zuvor wurde der erste übereinstimmende Parameter verwendet, was verhinderte, dass ein angemessenerer Name genutzt wurde. Siehe Firefox-Fehler 588781.
MathML
- Unterstützung für verzierte Operatoren
Entwicklerwerkzeuge
- Das Webkonsolen-
Console
-Objekt hat jetzt einedebug()
-Methode, die ein Alias für seinelog()
-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, siehe Aktualisieren von Add-ons für Firefox 5.
Hinweis: Firefox 5 erfordert, dass Binärkomponenten neu kompiliert werden, wie es bei allen Hauptversionen von Firefox der Fall ist. Siehe Binary Interfaces 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 jetzt das Angeben der Eingangsquelle alsnsIInputStream
.
Schnittstellenänderungen
- Die
nsIHttpChannelInternal
-Schnittstelle hat neue Attribute, die Zugriff auf Informationen über die Adressen und Ports der Endpunkte der Kanäle bieten. Diese Informationen werden hauptsächlich für Debugging-Zwecke bereitgestellt. - Die Attribute
width
undheight
des<canvas>
-Elements werden jetzt in IDL als unsignierte Ganzzahlen statt als signiert 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 wurden als Implementierungsdetails eingestuft und sind nicht mehr erforderlich:
nsICiter
(siehe Firefox-Fehler 633066)nsIDOM3Document
(siehe Firefox-Fehler 639849)nsIFIXptrEvaluator
nsISelectElement
(siehe Firefox-Fehler 619996)
Debug-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 umzuwandeln.
Änderungen am 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 Abrufen des Codes können Sieconfigure && make
(odermake -f client.mk
) ausführen, um Firefox zu bauen.