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 Zeichensätze UTF-7 und UTF-32 entfernt.
- Im Quirks-Modus werden leere
<map>
s nicht mehr zugunsten nicht-leerer ignoriert, wenn sie übereinstimmen. Weitere Details finden Sie in den Gecko-Hinweisen zum<map>
Element. - Firefox Mobile auf Android unterstützt jetzt WOFF-Schriftarten für
@font-face
. - WebGL lädt keine Texturen mehr von anderen Domains als der Ursprungsdomain als Sicherheitsmaßnahme. HTTP-Zugriffskontrolle Unterstützung sollte künftig verfügbar sein, um dies sicherer zu ermöglichen.
Canvas-Verbesserungen
- Der
<canvas>
2D-Zeichnungskontext unterstützt jetzt die Angabe einesImageData
-Objekts als Eingabe für diecreateImageData()
Methode; dies erstellt ein neuesImageData
-Objekt, das mit den gleichen Dimensionen wie das angegebene Objekt initialisiert ist, jedoch weiterhin alle Pixel auf transparentes Schwarz voreingestellt hat. Dies war dokumentiert, aber nicht implementiert. - Bei der Angabe nicht-endlicher Werte bei der Farbstopp-Zugabe durch einen Aufruf der
CanvasGradient
MethodenaddColorStop()
, wird jetzt korrektINDEX_SIZE_ERR
anstelle vonSYNTAX_ERR
ausgelöst. - Die
HTMLCanvasElement
MethodetoDataURL()
schreibt jetzt den angegebenen MIME-Typ vor dem Abgleich korrekt klein. getImageData()
akzeptiert jetzt korrekt Rechtecke, die über die Grenzen der Leinwand hinausgehen; Pixel außerhalb der Leinwand werden als transparentes Schwarz zurückgegeben.drawImage()
undcreateImageData()
behandeln nun negative Argumente gemäß der Spezifikation, indem sie das Rechteck um die entsprechende Achse drehen. Wir benötigen einen Artikel über CSS-Sizing und wie dies funktioniert.- Die Angabe nicht-endlicher Werte bei der
createImageData()
Methode wirft jetzt korrekt eineNOT_SUPPORTED_ERR
Ausnahme. createImageData()
undgetImageData()
geben nun korrekt mindestens ein Pixel Bilddaten zurück, wenn ein kleineres als ein Pixel großes Rechteck angegeben wird.- Die Angabe eines negativen Radius bei der
createRadialGradient()
Methode erzeugt nun korrektINDEX_SIZE_ERR
. - Die Angabe eines
null
oderundefined
Bildes bei dencreatePattern()
oderdrawImage()
Methoden erzeugt nun korrekt eineTYPE_MISMATCH_ERR
Ausnahme. - Die Angabe ungültiger Werte für
globalAlpha
löst keineSYNTAX_ERR
Ausnahme mehr aus; diese werden nun korrekt stillschweigend ignoriert. - Ungültige Werte bei Aufrufen von
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
, oderarc()
lösen keine Ausnahme mehr aus; diese Aufrufe werden nun korrekt stillschweigend ignoriert. - Das Setzen ungültiger Werte für
shadowOffsetX
,shadowOffsetY
, odershadowBlur
wird nun stillschweigend ignoriert. - Das Setzen ungültiger Werte für
rotate
oderscale
wird nun stillschweigend ignoriert.
CSS
- CSS-Animationen
-
Unterstützung für CSS-Animationen wurde hinzugefügt, derzeit mit dem
-moz-
Präfix.
DOM
- Die Methode
modify()
desSelection
Objekts wurde geändert, sodass die "word" Auswahlgranularität keine nachfolgenden Leerzeichen mehr einschließt; dies macht es konsistenter zwischen Plattformen und entspricht dem Verhalten von WebKits Implementierung. - Die Methoden
setTimeout()
undsetTimeout()
werden nun so geklammert, dass sie in inaktiven Tabs nicht mehr als ein Timeout pro Sekunde senden. Zusätzlich klammern sie jetzt geschachtelte Timeouts auf den kleinsten von der HTML5 Spezifikation erlaubten Wert: 4 ms (anstelle der bisherigen 10 ms). - Ebenso klammert die Methode
Window.setInterval()
undWorkerGlobalScope.setInterval()
ebenfalls auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs. XMLHttpRequest
unterstützt nun dasloadend
Ereignis für Fortschritts-Listener. Dies wird nach jedem Transfer gesendet (also nach demabort
,error
, oderload
Ereignis). Sie können dies verwenden, um Aufgaben zu behandeln, die unabhängig vom Erfolg oder Fehlschlag eines Transfers durchgeführt werden müssen.- Die
slice()
Methode derBlob
und somit derFile
Objekte wurde entfernt und durch eine neue, vorgeschlagene Syntax ersetzt, die mehr Konsistenz mit den MethodenArray.slice()
undString.slice()
in JavaScript bietet. Diese Methode ist derzeit alsmozSlice()
benannt. - Der Wert von
Navigator.language
wird jetzt durch den Wert desAccept-Language
HTTP-Headers bestimmt. - Die Eigenschaft
Element.prefix
ist nun nur lesbar, wie es die DOM-Spezifikation erfordert. - Das
HTMLVideoElement
unterstützt nun experimentelle Eigenschaften, um Informationen über Video-Paint-Statistiken wie Bildraten zu erhalten.
JavaScript
- Reguläre Ausdrücke sind nicht mehr aufrufbar, als ob sie Funktionen wären; diese Änderung wurde zusammen mit dem WebKit-Team vorgenommen, um die Kompatibilität sicherzustellen (siehe WebKit Bug 28285). Dieses Feature existierte seit langem, wurde jedoch 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 bisher nur im strengen Modus als reserviert behandelt; jetzt werden sie immer als reserviert betrachtet:
class
,enum
,export
,extends
,import
, undsuper
. - DOM-Dokumente, die in Chrome-Code erstellt wurden, dürfen nicht mehr an gesandboxte Skripte weitergegeben werden.
- Der JSON-Parser wurde neu geschrieben für verbesserte Geschwindigkeit und Konformität. Dies umfasst eine Korrektur 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 nun indexierbar 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 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 mit der Wiederverwendung von Verbindungen im Persistent-Connection-Pool umzugehen; anstatt den Pool wie eine FIFO Queue zu behandeln, versucht Necko nun, den Pool so zu sortieren, dass Verbindungen mit dem größten Congestion Window (CWND) zuerst kommen. Dies kann die Round-Trip-Zeit (RTT) von HTTP-Transaktionen reduzieren, indem die Notwendigkeit vermieden wird, Fenster von Verbindungen in vielen Fällen zu vergrößern.
- Firefox behandelt nun den
Content-Disposition
HTTP-Response-Header effektiver, wenn sowohl diefilename
als auch diefilename*
Parameter bereitgestellt werden; es durchsucht alle bereitgestellten Namen und verwendet denfilename*
Parameter, wenn einer verfügbar ist, auch wenn zuerst einfilename
Parameter enthalten ist. Früher 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 Konsolenobjekt der Webkonsole verfügt nun über eine
debug()
Methode, die ein Alias für dielog()
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 Updating add-ons for Firefox 5.
Hinweis: Firefox 5 erfordert, dass binäre Komponenten neu kompiliert werden, wie alle großen Firefox-Veröffentlichungen. 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 Methode
asyncFetch()
unterstützt nun die Angabe der Eingabequelle 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 zu Debugging-Zwecken bereitgestellt. - Die Attribute
width
undheight
des<canvas>
Elements werden nun in IDL als unsignierte Ganzzahlen anstelle von signierten widergespiegelt (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)
Debug-Hilfen
- Der neue
DebugOnly<T>
Helper ermöglicht es, Variablen nur fürDEBUG
Builds zu deklarieren.
JavaScript API (SpiderMonkey)
JS_DoubleToInt32()
undJS_DoubleToUint32()
wurden hinzugefügt, für die Umwandlung vonjsdouble
Werten in C Ganzzahlen und unsignierte Ganzzahlen.
Änderungen im Build-System
- Sie können nun Firefox ohne eine
mozconfig
Datei bauen; die--enable-application
Einstellung standardmäßig auf "browser". Nach dem Pullen oder Herunterladen des Codes können Sieconfigure && make
(odermake -f client.mk
) verwenden, um Firefox zu bauen.