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 Veränderungen, die Entwickler in dieser Ausgabe betreffen.
Änderungen für Webentwickler
HTML
- Alle HTML-Elemente verfügen jetzt ü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 Zeichensatzkodierungen UTF-7 und UTF-32 entfernt.
- Im Quirks-Modus werden leere
<map>
s nicht mehr zugunsten nicht-leerer übersprungen, wenn sie übereinstimmen. Weitere Informationen 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 Ursprungs-Domain als Sicherheitsmaßnahme. HTTP-Zugriffskontrolle-Unterstützung sollte in Zukunft verfügbar sein, um dies sicherer zu ermöglichen.
Verbesserungen der Canvas
- Der 2D-Zeichnungskontext von
<canvas>
unterstützt nun die Angabe einesImageData
-Objekts als Eingabe für diecreateImageData()
-Methode; dies erstellt ein neuesImageData
-Objekt, das mit denselben Abmessungen wie das angegebene Objekt initialisiert ist, aber immer noch mit allen Pixeln auf transparentes Schwarz vorgesetzt ist. Dies war bereits als implementiert dokumentiert, war es aber nicht. - Die Angabe von nicht-finiten Werten beim Hinzufügen von Farbstopps über einen Aufruf der
CanvasGradient
-MethodeaddColorStop()
wirft jetzt korrektINDEX_SIZE_ERR
anstelle vonSYNTAX_ERR
. - Die
HTMLCanvasElement
-MethodetoDataURL()
konvertiert jetzt korrekt den angegebenen MIME-Type in Kleinbuchstaben, bevor sie ihn vergleicht. 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 jetzt negative Argumente gemäß der Spezifikation, indem sie das Rechteck um die entsprechende Achse spiegeln. Wir benötigen einen Artikel über CSS-Größenanpassung und wie dies funktioniert.- Die Angabe von nicht-finiten Werten beim Aufrufen von
createImageData()
löst jetzt ordnungsgemäß eineNOT_SUPPORTED_ERR
-Ausnahme aus. createImageData()
undgetImageData()
geben jetzt korrekt mindestens ein Pixel-Bilddaten zurück, wenn ein kleineres als ein Pixel großes Rechteck angegeben wird.- Die Angabe eines negativen Radius beim Aufruf von
createRadialGradient()
löst jetzt korrektINDEX_SIZE_ERR
aus. - Die Angabe eines
null
oderundefined
Bildes beim Aufruf voncreatePattern()
oderdrawImage()
löst jetzt korrekt eineTYPE_MISMATCH_ERR
-Ausnahme aus. - Die Angabe ungültiger Werte für
globalAlpha
löst keineSYNTAX_ERR
-Ausnahme mehr aus; diese werden jetzt korrekt stillschweigend ignoriert. - Die Angabe ungültiger Werte beim Aufruf von
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
oderarc()
löst keine Ausnahme mehr aus; diese Aufrufe werden jetzt korrekt stillschweigend ignoriert. - Das Festlegen eines ungültigen Wertes für
shadowOffsetX
,shadowOffsetY
odershadowBlur
wird jetzt stillschweigend ignoriert. - Das Festlegen eines ungültigen Wertes für
rotate
oderscale
wird jetzt stillschweigend ignoriert.
CSS
- CSS-Animationen
-
Die Unterstützung für CSS-Animationen wurde hinzugefügt, derzeit mit dem Präfix
-moz-
.
DOM
- Die Methode
modify()
desSelection
-Objekts wurde so geändert, dass die Granularität "Wort" keine nachlaufenden Leerzeichen mehr einschließt; dies macht sie plattformübergreifend konsistenter und entspricht dem Verhalten der WebKit-Implementierung. - Die Methoden
setTimeout()
undsetTimeout()
sind jetzt darauf begrenzt, nicht mehr als ein Timeout pro Sekunde in inaktiven Tabs zu senden. Darüber hinaus begrenzt es jetzt verschachtelte Timeouts auf den kleinsten, von der HTML5-Spezifikation erlaubten Wert: 4 ms (statt der zuvor verwendeten 10 ms). - Ebenso begrenzt die Methode
Window.setInterval()
undWorkerGlobalScope.setInterval()
jetzt auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs. XMLHttpRequest
unterstützt jetzt dasloadend
Ereignis für Fortschrittsbeobachter. Dies wird gesendet, nachdem ein Transfer abgeschlossen ist (d.h. nach demabort
,error
oderload
Ereignis). Sie können dies nutzen, um Aufgaben zu behandeln, die unabhängig vom Erfolg oder Misserfolg eines Transfers ausgeführt werden müssen.- Die
slice()
-Methode derBlob
- und in der Erweiterung 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 jetzt durch den Wert desAccept-Language
HTTP-Headers bestimmt. - Die Eigenschaft
Element.prefix
ist jetzt schreibgeschützt, wie es die DOM-Spezifikation verlangt. - Das
HTMLVideoElement
unterstützt nun experimentelle Eigenschaften, um Informationen über Videodarstellungsstatistiken 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 Abstimmung mit dem WebKit-Team vorgenommen, um die Kompatibilität zu gewährleisten (siehe WebKit bug 28285). Diese Funktion existierte schon lange, wurde aber 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 zuvor nur im strikten 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, können jetzt nicht mehr an gesandboxten Skripten weitergegeben 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
class
SVG-Attribut kann nun animiert werden. - Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind jetzt indexierbar und können wie Arrays angesprochen werden; außerdem 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 persistenten Verbindungspool umzugehen; anstatt den Pool als FIFO-Warteschlange zu behandeln, versucht Necko jetzt, den Pool nach Verbindungen mit dem größten Stau-Fenster (CWND) zu sortieren. Dies kann die Round-Trip-Zeit (RTT) von HTTP-Transaktionen reduzieren, indem in vielen Fällen das Wachsen der Fenster von Verbindungen vermieden wird.
- Firefox verarbeitet den
Content-Disposition
HTTP-Antwort-Header jetzt effektiver, wenn sowohl diefilename
als auch diefilename*
Parameter bereitgestellt werden; es durchläuft alle bereitgestellten Namen und verwendet denfilename*
-Parameter, wenn einer verfügbar ist, selbst wenn einfilename
-Parameter zuerst enthalten ist. Bisher wurde der erste übereinstimmende Parameter verwendet, was verhinderte, dass ein angemessenerer Name verwendet wurde. Siehe Firefox bug 588781.
MathML
- Unterstützung für verzierte Operatoren
Entwicklerwerkzeuge
- Das Konsolenobjekt der Web-Konsole verfügt jetzt ü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 Aktualisierung von Add-ons für Firefox 5.
Hinweis: Firefox 5 erfordert, dass binäre Komponenten neu kompiliert werden, ebenso wie alle Hauptversionen von Firefox. Siehe Binäre Schnittstellen für Details.
Änderungen an JavaScript-Code-Modulen
Neue JavaScript-Code-Module
- Das Modul
Dict.jsm
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 verfügt über neue Attribute, die den 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
width
- undheight
-Attribute des<canvas>
Elements werden jetzt in IDL als unsignierte 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 Hilfsdienst
DebugOnly<T>
macht es möglich, 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 im Build-System
- Sie können nun Firefox ohne eine
mozconfig
-Datei bauen; die--enable-application
Einstellung wird jetzt standardmäßig auf "browser" gesetzt. Nach dem Abrufen oder Herunterladen des Codes können Sieconfigure && make
(odermake -f client.mk
) verwenden, um Firefox zu bauen.