Firefox 9 – Versionshinweise für Entwickler
Firefox 9 wurde am 20. Dezember 2011 für Windows veröffentlicht. Die Version 9.0.1 für Mac und Linux, die einen in letzter Minute entdeckten Absturzfehler behob, wurde am 21. Dezember 2011 veröffentlicht.
Änderungen für Webentwickler
>Entwicklerwerkzeuge
- Die Webkonsole unterstützt in ihren Protokollierungsmethoden jetzt grundlegende String-Substitutionen.
- Sie können in der Webkonsole jetzt visuell verschachtelte Ausgabeblöcke erstellen, um die Ausgabe leichter lesbar zu machen.
HTML
- Das
value-Attribut von<li>kann jetzt negativ sein. Bisher wurden negative Werte in 0 umgewandelt. - Bei Verwendung der Elemente
<audio>und<video>können Sie jetzt Start- und Endzeit der Medienwiedergabe im URI des Mediums angeben. - Die Elemente
<input>und<textarea>berücksichtigen beim Aufruf der Rechtschreibprüfung jetzt den Wert deslang-Attributs. - Wenn das Element
<input>mittype="file"undaccept="image/*"verwendet wird, können Nutzer von Firefox für Android jetzt mit der Kamera ihres Smartphones Fotos aufnehmen, ohne den Browser zu verlassen. - PNG-ICO-Bilder im Stil von Windows Vista werden jetzt unterstützt.
- Beim Zeichnen von Bildern, die mit dem Attribut
crossoriginCORS-Zugriff anfordern, wird der Canvas nicht mehr fälschlicherweise als „tainted“ markiert, wenn CORS-Zugriff gewährt wurde. - Der Wert des Attributs
rowspankann jetzt bis zu 65.534 betragen; bisher lag die Obergrenze bei 8190.
CSS
- Die Eigenschaft
font-stretchwird jetzt unterstützt. - Die Eigenschaft
columnswird jetzt mit dem Präfix-mozunterstützt. Sie ist eine Kurzschreibweise für die Eigenschaftencolumn-widthundcolumn-count. - Wenn ein über das Element
<link>eingebundenes Stylesheet vollständig geladen und geparst wurde (aber noch nicht auf das Dokument angewendet wurde), wird jetzt einload-Ereignis ausgelöst. Tritt bei der Verarbeitung eines Stylesheets ein Fehler auf, wird außerdem einerror-Ereignis ausgelöst. - Mit einer neuen Syntax aus zwei Werten für
text-overflowkönnen Sie jetzt festlegen, wie überlaufender Inhalt sowohl am linken als auch am rechten Rand behandelt wird.
JavaScript
Keine Änderungen.
DOM
- Vollbildmodus verwenden
-
Die neue Fullscreen API ermöglicht es, Inhalte ohne Browseroberfläche auf dem gesamten Bildschirm darzustellen. Das eignet sich besonders für Videos und Spiele. Diese API ist derzeit experimentell und mit einem Präfix versehen.
- Die Methode
Node.contains()ist jetzt implementiert. Mit ihr können Sie feststellen, ob ein Knoten ein Nachfahre eines anderen Knotens ist. - Das Attribut
Node.parentElementist implementiert. Es gibt das übergeordneteElementeines DOM-Knotens zurück odernull, wenn der übergeordnete Knoten kein Element ist. - Composition Events gemäß DOM Level 3 werden jetzt unterstützt.
- Das Attribut
Document.scriptsist implementiert. Es gibt eineHTMLCollectionaller<script>-Elemente im Dokument zurück. - Die Methode
Document.queryCommandSupported()ist implementiert. - Die Ereignisse, auf die bei
<body>-Elementen reagiert werden kann, wurden an den neuesten Entwurf der HTML5-Spezifikation angepasst. Der Leitfaden zu DOM-Ereignissen enthält eine Liste dieser Ereignisse. - Das Ereignis
readystatechangewird jetzt wie vorgesehen nur noch auf demDocumentausgelöst. - Ereignis-Handler sind jetzt als standardisierte IDL-Interfaces implementiert. In den meisten Fällen hat dies keine Auswirkungen auf Inhalte, es gibt jedoch Ausnahmen.
XMLHttpRequestunterstützt jetzt den neuen Antworttyp"moz-json". Damit kannXMLHttpRequestJSON-Strings automatisch parsen: Wenn Sie diesen Typ anfordern, wird ein zurückgegebener JSON-String geparst, sodass der Wert der Eigenschaftresponsedas resultierende JavaScript-Objekt ist.XMLHttpRequest-„progress“-Ereignisse werden jetzt zuverlässig für jeden empfangenen Datenblock gesendet. Bisher konnte es vorkommen, dass für den letzten empfangenen Datenblock kein „progress“-Ereignis ausgelöst wurde. Sie können den Fortschritt jetzt allein anhand der „progress“-Ereignisse verfolgen, ohne zusätzlich „load“-Ereignisse überwachen zu müssen, um den Empfang des letzten Datenblocks zu erkennen.- Bisher löste ein Aufruf von
addEventListener()mit einemnull-Listener eine Ausnahme aus. Jetzt kehrt die Methode ohne Fehler und ohne Wirkung zurück. - Mit der neuen Eigenschaft
navigator.doNotTrackkönnen Ihre Inhalte einfach feststellen, ob Nutzer die Do-Not-Track-Einstellung aktiviert haben. Lautet der Wert „yes“, sollten Sie die Nutzer nicht tracken. Range- undSelection-Objekte verhalten sich beim Aufruf vonsplitText()undnormalize()jetzt gemäß ihren Spezifikationen.- Der Wert von
Node.ownerDocumentist bei Doctype-Knoten jetzt das Dokument, für dascreateDocumentType()zum Erstellen des Knotens aufgerufen wurde, stattnull. window.navigator.taintEnabledwurde entfernt; es wurde seit vielen Jahren nicht mehr unterstützt.
Workers
- Workers, die über Blob-URLs implementiert wurden, funktionierten in Firefox 8 nicht. Ab Firefox 9 funktionieren sie wieder.
WebGL
- Die Attribute
drawingBufferWidthunddrawingBufferHeightdes WebGL-Kontexts werden jetzt unterstützt.
MathML
- Der nicht standardisierte Wert
restylefür das Attributactiontypevon<maction>-Elementen wurde entfernt. - Das Element
mlabeledtrwird zwar weiterhin nicht unterstützt, seine Verwendung verhindert aber nicht mehr vollständig das Rendering. Den Fortschritt bei der tatsächlichen Unterstützung dieses Elements können Sie unter Firefox-Bug 689641 verfolgen.
Netzwerk
- Sie können jetzt den Inhalt von typisierten JavaScript-Arrays (also den Inhalt eines
ArrayBuffer-Objekts) mit XMLHttpRequest senden. - WebSocket-Verbindungen können jetzt Nicht-Zeichen in ansonsten gültigen UTF-8-Datenframes empfangen, statt daran zu scheitern.
- Der HTTP-Header
Acceptfür XSLT-Anfragen wurde zur Vereinfachung in*/*geändert. Da beim Abrufen von XSLT ohnehin schon immer auf*/*zurückgegriffen wurde, war es sinnvoll, bereits die ursprüngliche Anfrage zu vereinfachen. - Wenn ein Server versucht, Nutzer mit den Antwortcodes
301 Moved Permanentlyoder307 Temporary Redirectzu einemjavascript:-URI umzuleiten, führt dies jetzt zu einem Fehler wegen einer ungültigen Verbindung, statt die Umleitung auszuführen. Dies verhindert bestimmte Arten von Cross-Site-Scripting-Angriffen. - Inhalte, die mit einem leeren
Content-Dispositionausgeliefert wurden, wurden bisher so behandelt, als wäreContent-Dispositionauf „attachment“ gesetzt. Das funktionierte nicht immer wie erwartet. Jetzt werden sie so behandelt, als wäreContent-Dispositionauf „inline“ gesetzt. - Die standardmäßige maximale Größe eines Eintrags im Festplatten-Cache wurde auf 50 MB erhöht. Bisher wurden nur Einträge bis zu 5 MB zwischengespeichert.
Änderungen für Mozilla- und Add-on-Entwickler
Unter Add-ons für Firefox 9 aktualisieren finden Sie einen Überblick über Änderungen, die möglicherweise nötig sind, damit Ihre Add-ons mit Firefox 9 funktionieren.
XUL
- Das Element
<xul:tab>hat jetzt einpending-Attribut mit dem Werttrue, während der Tab vom Session-Store-Dienst wiederhergestellt wird. Dieses Attribut kann verwendet werden, um den Tab in Themes zu gestalten. Bei Tabs, deren Wiederherstellung nicht aussteht, ist das Attribut nicht vorhanden. - Das Element
<xul:tab>hat jetzt einunread-Attribut mit dem Werttrue, wenn sich der Tab geändert hat, seit er zuletzt aktiv war, oder wenn er seit Beginn der aktuellen Sitzung noch nicht ausgewählt wurde. Bei Tabs, die nicht als ungelesen gelten, ist das Attribut nicht vorhanden. - Sie können jetzt ein
<xul:panel>als Drag-Image für DOM-Drag-and-Drop-Vorgänge verwenden. Dadurch können Sie die standardisierte Drag-and-Drop-API für XUL-Inhalte nutzen. - Bei der Methode
appendNotificationdes Elements<xul:notificationbox>können Sie jetzt einen Callback angeben, der bei relevanten Ereignissen im Zusammenhang mit der Benachrichtigungsbox aufgerufen wird. Derzeit gibt es nur das Ereignis „removed“, das meldet, dass die Box aus ihrem Fenster entfernt wurde.
Änderungen an JavaScript-Code-Modulen
FileUtils.jsmverfügt jetzt über einenFile-Konstruktor, der einnsIFile-Objekt zurückgibt, das eine anhand ihres Pfadnamens angegebene Datei repräsentiert.
Änderungen an Diensten
- Der Dienst für Inhaltseinstellungen unterstützt jetzt das private Surfen (siehe Firefox-Bug 679784).
NSPR
- NSPR verfügt jetzt über ein „append“-Modul, mit dem Sie neue Daten an das Ende eines bestehenden Logs anhängen können.
Änderungen an Interfaces
Entfernte Interfaces
nsIGlobalHistory3wurde im Zuge der Vereinfachung des Places- und DocShell-Codes entfernt.
Weitere Änderungen an Interfaces
- Das Interface
nsISoundhat eine neue Konstante:EVENT_EDITOR_MAX_LEN. Damit kann der Systemklang abgespielt werden, wenn in ein Textfeld mehr Zeichen eingegeben werden, als maximal zulässig sind. Derzeit wird dies nur unter Windows verwendet. - Das Interface
nsIScriptError2hat die neuen EigenschaftentimeStampundinnerWindowID. Außerdem erwartet die MethodeinitWithWindowID()jetzt eine innere statt einer äußeren Fenster-ID. - Das Attribut
nsIBidiKeyboard.haveBidiKeyboardswurde hinzugefügt. Damit können Sie feststellen, ob auf dem System für beide Schreibrichtungen – von links nach rechts und von rechts nach links – jeweils mindestens eine Tastatur installiert ist. - Mit dem neuen Attribut
nsIEditor.isSelectionEditablekönnen Sie feststellen, ob der Anker der aktuellen Auswahl bearbeitbar ist. Das hilft in Fällen, in denen nur Teile eines Dokuments bearbeitbar sind: Sie können prüfen, ob sich die aktuelle Auswahl in einem bearbeitbaren Bereich befindet. - Die Methoden
nsIBrowserHistory.registerOpenPage()undnsIBrowserHistory.unregisterOpenPage()wurden im Rahmen einer Leistungsoptimierung des Places-Systems entfernt. Stattdessen können Sie die entsprechenden Methoden inmozIPlacesAutoCompleteverwenden. - Die Methode
nsIDOMWindowUtils.wrapDOMFile()wurde hinzugefügt. Sie gibt für ein bestimmtesnsIFileein DOM-File-Objekt zurück. - Die Methode
nsIChromeFrameMessageManager.removeDelayedFrameScript()wurde hinzugefügt, um verzögert geladene Skripte entfernen zu können. Bootstrapped-Add-ons sollten sie beim Herunterfahren verwenden, um alle Skripte zu entfernen, die sie mitnsIChromeFrameMessageManager.loadFrameScript()und gesetztem Flag für verzögertes Laden geladen haben. Für Add-ons ist die Methode alsbrowser.messageManager.removeDelayedFrameScript()verfügbar. - Das Interface
nsIAppStartuphat ein neues Attribut namensinterrupted. Damit können Sie feststellen, ob der Startvorgang zu irgendeinem Zeitpunkt durch eine interaktive Eingabeaufforderung unterbrochen wurde. Das kann beispielsweise bei der Messung von Startzeiten für Leistungsbewertungen hilfreich sein, um Messwerte aus unterbrochenen Sitzungen auszuschließen. - Das Interface
nsIEditorSpellCheckwurde überarbeitet, um die Auswahl von Wörterbüchern für die Rechtschreibprüfung pro Website zu unterstützen.
IDL-Parser
Der IDL-Parser unterstützt das nie vollständig implementierte Konzept eindeutiger Zeiger nicht mehr.
Änderungen am Build-System
- Die Option
--enable-application=standalonezum Erstellen eines eigenständigen XPConnect wurde entfernt; sie funktionierte ohnehin seit 2007 nicht mehr. - Die Unterstützung für eigenständige Builds von Necko und Transformiix XSLT wurde entfernt. Sie können
--enable-application=networkund--enable-application=content/xsltnicht mehr verwenden. - Das Build-System sucht
.mozconfigjetzt nur noch unter$topsrcdir/.mozconfigoder$topsrcdir/mozconfig, sofern Sie den Pfad zu.mozconfignicht mit der UmgebungsvariablenMOZCONFIGüberschreiben. - Das Dienstprogramm
xpidlwurde im SDK durchpyxpidlersetzt.
Weitere Änderungen
- Die Rechtschreibprüfung hat keine willkürliche Begrenzung auf 130 Zeichen pro Wort mehr. Diese Grenze sollte zuvor Abstürze der Rechtschreibprüfung verhindern; die zugrunde liegenden Fehler wurden inzwischen behoben.
- Sie können jetzt über die Kategorie „JavaScript-navigator-property“ Komponenten registrieren, die dem Objekt
window.navigatorFunktionen hinzufügen.