Firefox 5 Versionshinweise für Entwickler
Firefox 5, basierend auf Gecko 5.0, wurde am 21. Juni 2011 veröffentlicht. Dieser Artikel bietet Links zu Informationen über Ä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 nun nicht mehr zugunsten nicht leerer übersprungen. - Firefox Mobile auf Android unterstützt jetzt WOFF-Schriften für
@font-face. - Aus Sicherheitsgründen lädt WebGL keine Texturen mehr von Domänen, die nicht von der Herkunftsdomäne stammen. Unterstützung für HTTP-Zugriffskontrolle soll in Zukunft kommen, um dies sicherer zu ermöglichen.
Verbesserungen am Canvas
- Der 2D-Zeichenkontext des
<canvas>-Elements unterstützt nun die Angabe einesImageData-Objekts als Eingabe für die MethodecreateImageData(); dies erstellt ein neuesImageData-Objekt, das mit denselben Abmessungen wie das angegebene Objekt initialisiert wird, jedoch mit allen Pixeln auf transparentes Schwarz voreingestellt. Dies war bereits als implementiert dokumentiert, war es jedoch nicht. - Die Angabe nicht-finiter Werte beim Hinzufügen von Farbstopps durch einen Aufruf der Methode
addColorStop()derCanvasGradientwirft nun korrektINDEX_SIZE_ERRanstelle vonSYNTAX_ERR. - Die Methode
toDataURL()desHTMLCanvasElementwandelt den angegebenen MIME-Typ nun korrekt in Kleinbuchstaben um, bevor er abgeglichen wird. 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 negative Argumente nun gemäß der Spezifikation, indem das Rechteck um die entsprechende Achse gespiegelt wird. Wir benötigen einen Artikel über CSS-Größenanpassung und wie dies funktioniert.- Die Angabe nicht-finiter Werte bei Aufruf von
createImageData()wirft nun korrekt eineNOT_SUPPORTED_ERR-Ausnahme. createImageData()undgetImageData()geben nun korrekt mindestens einen Pixel Bilddaten zurück, wenn ein Rechteck kleiner als ein Pixel angegeben wird.- Die Angabe eines negativen Radius bei Aufruf von
createRadialGradient()wirft nun korrektINDEX_SIZE_ERR. - Die Angabe eines
nulloderundefinedBildes bei Aufruf voncreatePattern()oderdrawImage()wirft nun korrekt eineTYPE_MISMATCH_ERR-Ausnahme. - Ungültige Werte für
globalAlphawerfen nicht mehr eineSYNTAX_ERR-Ausnahme; diese werden nun korrekt stillschweigend ignoriert. - Die Angabe ungültiger Werte bei Aufrufen von
translate(),transform(),rect(),clearRect(),fillRect(),strokeRect(),lineTo(),moveTo(),quadraticCurveTo()oderarc()wirft keine Ausnahme mehr; diese Aufrufe werden nun korrekt stillschweigend ignoriert. - Die Einstellung des Wertes von
shadowOffsetX,shadowOffsetYodershadowBlurauf einen ungültigen Wert wird nun stillschweigend ignoriert. - Die Einstellung des Wertes von
rotateoderscaleauf einen ungültigen Wert wird nun stillschweigend ignoriert.
CSS
- CSS-Animationen
-
Unterstützung für CSS-Animationen wurde hinzugefügt und verwendet vorerst das Präfix
-moz-.
DOM
- Die Methode
modify()desSelection-Objekts wurde geändert, sodass die "Wort"-Auswahlgranularität keine nachgestellten Leerzeichen mehr einschließt; dadurch wird sie konsistenter über Plattformen hinweg und entspricht dem Verhalten der WebKit-Implementierung. - Die Methoden
setTimeout()undsetTimeout()sind nun so geregelt, dass sie nicht mehr als einmal pro Sekunde in inaktiven Tabs ausgeführt werden. Zusätzlich wird die Verschachtelung von Timeouts auf den kleinsten von der HTML5-Spezifikation erlaubten Wert begrenzt: 4 ms (anstatt der bisherigen 10 ms). - Ähnlich wird die Methode
Window.setInterval()undWorkerGlobalScope.setInterval()auf nicht mehr als ein Intervall pro Sekunde in inaktiven Tabs beschränkt. XMLHttpRequestunterstützt nun dasloadend-Ereignis für Fortschrittslistener. Dies wird nach jedem Enden eines Transfers gesendet (nach demabort-,error- oderload-Ereignis). Sie können dies verwenden, um Aufgaben zu erledigen, die unabhängig vom Erfolg oder Misserfolg eines Transfers ausgeführt werden müssen.- Die Methode
slice()derBlob- und damit 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 wird vorerstmozSlice()genannt. - Der Wert von
Navigator.languagewird nun ermittelt, indem der Wert desAccept-Language- HTTP-Headers betrachtet wird. - Die Eigenschaft
Element.prefixist nun schreibgeschützt, wie es die DOM-Spezifikation erfordert. - Das
HTMLVideoElementunterstützt nun experimentelle Eigenschaften, um Informationen über Videoanzeigestatistiken wie Bildraten zu erhalten.
JavaScript
- Reguläre Ausdrücke sind nicht mehr aufrufbar, als wären sie Funktionen; diese Änderung wurde zusammen mit dem WebKit-Team implementiert, um Kompatibilität zu gewährleisten (siehe WebKit-Bug 28285). Dieses Feature existierte schon lange, wurde aber nie dokumentiert (zumindest hier auf MDC nicht).
- Die Methode
Function.prototype.isGenerator()wird nun unterstützt; sie ermöglicht es, festzustellen, ob eine Funktion ein Generator ist. - Die folgenden reservierten Wörter wurden bisher nur im strikten Modus als reserviert behandelt; jetzt sind sie immer reserviert:
class,enum,export,extends,importundsuper. - DOM-Dokumente, die im Chrome-Code erstellt wurden, dürfen nicht mehr den gesandboxten Skripten ausgesetzt werden.
- Der JSON-Parser wurde umgeschrieben, um Geschwindigkeit und Konformität zu verbessern. Dies beinhaltet eine Korrektur für Firefox Bug 572279.
SVG
- Das
classSVG-Attribut kann jetzt animiert werden. - Die folgenden SVG-bezogenen DOM-Schnittstellen, die Listen von Objekten darstellen, sind jetzt indizierbar und können wie Arrays angesprochen werden; zudem haben sie eine
length-Eigenschaft, die die Anzahl der Elemente in den Listen angibt:SVGLengthList,SVGNumberList,SVGPathSegListundSVGPointList.
HTTP
- Firefox sendet das
Keep-AliveHTTP-Header nicht mehr; es war nicht korrekt formatiert und überflüssig, da wir ohnehin dasConnectionoderProxy-Connection-Header mit dem Wert "keep-alive" gesendet haben. - Das HTTP-Transaktionsmodell wurde aktualisiert, um intelligenter mit dem Wiederverwenden von Verbindungen im Persistent-Verbindungspool umzugehen; statt den Pool wie eine FIFO-Warteschlange zu behandeln, versucht Necko nun, den Pool mit Verbindungen mit dem größten Kongestionsfenster (CWND) zuerst zu sortieren. Dies kann die Round-Trip Time (RTT) von HTTP-Transaktionen verringern, indem das Wachsen der Verbindungsfenster in vielen Fällen vermieden wird.
- Firefox behandelt das
Content-DispositionHTTP-Antwortheader effektiver, wenn sowohl die Parameterfilenameals auchfilename*bereitgestellt werden; es durchsucht alle bereitgestellten Namen und verwendet den Parameterfilename*, wenn einer verfügbar ist, selbst wenn zuerst einfilename-Parameter enthalten ist. Zuvor würde der erste übereinstimmende Parameter verwendet, was verhinderte, dass ein geeigneterer Name verwendet wird. Siehe Firefox Bug 588781.
MathML
- Unterstützung für verzierte Operatoren
Entwicklerwerkzeuge
- Das Konsolenobjekt des Webkonsolen-
Consolehat 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, siehe Aktualisieren von Add-ons für Firefox 5.
Hinweis: Firefox 5 erfordert, dass binäre Komponenten neu kompiliert werden, wie es bei allen Hauptversionen von Firefox der Fall ist. Einzelheiten finden Sie unter Binäre Schnittstellen.
Änderungen an JavaScript-Code-Modulen
Neue JavaScript-Code-Module
- Das
Dict.jsmCode-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 jetzt 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 für Debugging-Zwecke bereitgestellt. - Die Attribute
widthundheightdes<canvas>-Elements sind nun in IDL als vorzeichenlose Ganzzahlen anstelle von vorzeichenbehafteten reflektiert (sieheHTMLCanvasElement). - Die Schnittstellen
nsIAppStartup2undnsIAppStartup_MOZILLA_2_0wurden zu einer einzigen SchnittstellensIAppStartupzusammengeführt. - Die Schnittstelle
nsIDocShell_MOZILLA_2_0_BRANCHwurde in die SchnittstellensIDocShellintegriert. - Die Schnittstelle
nsIFocusManager_MOZILLA_2_0_BRANCHwurde in die SchnittstellensIFocusManagerintegriert. - Die Schnittstelle
nsIHTMLEditor_MOZILLA_2_0_BRANCHwurde in die SchnittstellensIHTMLEditorintegriert.
Neue Schnittstellen
nsIDOMAnimationEventhinzugefü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)nsIFIXptrEvaluatornsISelectElement(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 am Buildsystem
- Sie können nun Firefox ohne eine
mozconfig-Datei bauen; die--enable-applicationEinstellung ist nun standardmäßig auf "browser" gesetzt. Nachdem Sie den Code heruntergeladen oder abgerufen haben, können Sieconfigure && make(odermake -f client.mk) aufrufen, um Firefox zu bauen.