Firefox 9 für Entwickler
Firefox 9 wurde am 20. Dezember 2011 für Windows veröffentlicht. Die Mac- und Linux-Version 9.0.1, welche einen kurz vor Veröffentlichung entdeckten Absturzfehler behebt, wurden am 21. Dezember 2011 veröffentlicht.
Änderungen für Webentwickler
HTML
- Das
value
Attribut von<li>
kann nun negativ sein. Vorher wurden negative Werte zu 0 konvertiert. - Sie können nun die Start- und Endzeit von Medien angeben, indem Sie die URI des Mediums verwenden, wenn Sie die
<audio>
und<video>
Elemente nutzen. <input>
und<textarea>
Elemente respektieren jetzt den Wert deslang
Attributs, wenn der Rechtschreibprüfer aufgerufen wird.- Firefox auf Android ermöglicht es Benutzern jetzt, Fotos mit der Kamera ihres Handys aufzunehmen, ohne den Browser zu verlassen, wenn das
<input>
Element mittype="file"
undaccept="image/*"
verwendet wird. - Windows Vista Stil PNG ICO Bilder werden jetzt unterstützt.
- Bilder, die das
crossorigin
Attribut verwenden, um CORS-Zugriff anzufordern, verursachen beim Gewähren von CORS nicht mehr fälschlicherweise eine Verunreinigung der Leinwand. - Der Wert des
rowspan
Attributs kann jetzt so groß wie 65.534 sein, im Vergleich zu vorher 8190.
CSS
- Die
font-stretch
Eigenschaft wird jetzt unterstützt. - Die
columns
Eigenschaft wird jetzt unterstützt, mit dem-moz
Präfix. Dies ist eine Kurzform für die folgenden Eigenschaften:column-width
undcolumn-count
. - Wenn ein Stylesheet, das mit dem
<link>
Element eingebunden ist, vollständig geladen und geparst wurde (aber noch nicht auf das Dokument angewendet), wird nun einload
Ereignis ausgelöst. Auch, wenn ein Fehler beim Verarbeiten eines Stylesheets auftritt, wird einerror
Ereignis ausgelöst. - Sie können nun Überlauf-Einstellungen für beide Ränder von Inhalten mittels einer neuen Syntax mit zwei Werten für
text-overflow
spezifizieren.
JavaScript
Keine Änderung.
DOM
- Verwendung des Vollbildmodus
-
Die neue Vollbild-API bietet eine Möglichkeit, Inhalte im gesamten Bildschirm darzustellen, ohne Benutzeroberfläche des Browsers. Dies ist ideal für Video und Spiele. Diese API ist derzeit experimentell und mit Präfix versehen.
- Die Methode
Node.contains()
ist jetzt implementiert; sie lässt Sie feststellen, ob ein gegebenes Knoten ein Nachkomme eines anderen Knotens ist. - Das Attribut
Node.parentElement
wurde implementiert; es gibt das übergeordneteElement
eines DOM Knotens zurück odernull
, wenn das übergeordnete kein Element ist. - DOM Level 3 Kompositionsereignisse werden jetzt unterstützt.
- Das Attribut
Document.scripts
wurde implementiert; es gibt eineHTMLCollection
von allen<script>
Elementen im Dokument zurück. - Die Methode
Document.queryCommandSupported()
wurde implementiert. - Die Anzahl der Ereignisse, die auf
<body>
Elemente gehört werden können, wurde überarbeitet, um dem neuesten Entwurf der HTML5 Spezifikation zu entsprechen. Die Liste der Ereignisse in der DOM-Ereignis-Referenz zeigt, welche Ereignisse auf<body>
gehört werden können. - Das
readystatechange
Ereignis wird jetzt nur auf demDocument
ausgelöst, wie vorgesehen. - Ereignishandler sind jetzt als Standard-IDL-Schnittstellen implementiert. In den meisten Fällen wird dies keine Auswirkungen auf Inhalte haben, es gibt jedoch Ausnahmen.
- Ein neuer Antworttyp, "
moz-json
", wurde zuXMLHttpRequest
hinzugefügt, der esXMLHttpRequest
ermöglicht, JSON Zeichenfolgen automatisch zu parsen; wenn Sie diesen Typ anfordern, wird eine zurückgegebene JSON-Zeichenfolge geparst, sodass der Wert derresponse
Eigenschaft das resultierende JavaScript-Objekt ist. XMLHttpRequest
"progress" Ereignisse werden jetzt zuverlässig für jedes empfangene Datenstück gesendet; in der Vergangenheit war es möglich, dass das letzte empfangene Datenstück kein "progress" Ereignis auslöste. Jetzt können Sie den Fortschritt verfolgen, indem Sie nur den "progress" Ereignissen folgen, anstatt auch "load" Ereignisse überwachen zu müssen, um den Empfang des letzten Datenstücks zu erkennen.- In der Vergangenheit führte das Aufrufen von
addEventListener()
mit einemnull
Listener zu einer Ausnahme. Jetzt gibt es ohne Fehler zurück und hat keine Wirkung. - Die neue
navigator.doNotTrack
Eigenschaft ermöglicht es Ihren Inhalten einfach festzustellen, ob der Benutzer seine Anti-Tracking-Präferenz aktiviert hat; wenn dieser Wert "yes" ist, sollten Sie den Benutzer nicht verfolgen. Range
undSelection
Objekte verhalten sich jetzt gemäß ihrer Spezifikationen, wennsplitText()
undnormalize()
aufgerufen werden.- Der Wert von
Node.ownerDocument
für Doctype-Knoten ist jetzt das Dokument, auf demcreateDocumentType()
aufgerufen wurde, um den Knoten zu erstellen, anstattnull
. window.navigator.taintEnabled
wurde entfernt; es wurde seit vielen Jahren nicht mehr unterstützt.
Arbeiter
- Arbeiter, die in Blob-URLs implementiert wurden, waren in Firefox 8 fehlerhaft und funktionieren ab Firefox 9 wieder.
WebGL
- Die Attribute des WebGL Kontexts
drawingBufferWidth
unddrawingBufferHeight
werden jetzt unterstützt.
MathML
- Der nicht-standardisierte
restyle
Wert für dasactiontype
Attribut auf<maction>
Elementen wurde entfernt. - Obwohl noch nicht unterstützt, bricht die Verwendung des
mlabeledtr
Elements nicht mehr das gesamte Rendering. Siehe Firefox Bug 689641 für Fortschritte zur tatsächlichen Unterstützung dieses Elements.
Netzwerk
- Sie können jetzt den Inhalt von JavaScript typisierten Arrays (d.h. den Inhalt eines
ArrayBuffer
Objekts) mit XMLHttpRequest senden. - WebSocket-Verbindungen erlauben jetzt, dass Nicht-Zeichen in ansonsten gültigen UTF-8-Datenrahmen empfangen werden, anstatt zu scheitern.
- Der HTTP
Accept
Header für XSLT-Anfragen wurde aus Gründen der Einfachheit auf*/*
geändert. Da der Abruf von XSLT ohnehin immer auf*/*
zurückgefallen ist, ergab es Sinn, die anfängliche Anfrage zu vereinfachen. - Versuche eines Servers, die Antwortcodes
301 Moved Permanently
oder307 Temporary Redirect
zu verwenden, um den Benutzer zu einemjavascript:
URI umzuleiten, führen jetzt zu einem "bad connection" Fehler, anstatt tatsächlich umzuleiten. Dies verhindert bestimmte Arten von Cross-Site-Scripting-Angriffen. - Inhalte, die mit einem leeren
Content-Disposition
bereitgestellt werden, wurden zuvor so behandelt, als ob dieContent-Disposition
"attachment" wäre; dies funktionierte nicht immer wie erwartet. Diese werden jetzt so gehandhabt, als ob dieContent-Disposition
"inline" wäre. - Die standardmäßige maximale Größe eines Elements im Festplatten-Cache wurde auf 50 MB erhöht; vorher wurden nur Elemente bis zu 5 MB zwischengespeichert.
Entwickler-Tools
- Die Webkonsole unterstützt jetzt grundlegende Zeichenfolgen-Ersetzungen in ihren Logging-Methoden.
- Sie können jetzt visuell geschachtelte Blöcke von Ausgaben erstellen in der Webkonsole, um das Lesen zu erleichtern.
Änderungen für Mozilla- und Add-on-Entwickler
Siehe Aktualisierung von Add-ons für Firefox 9 für einen Überblick über die Änderungen, die Sie vornehmen müssen, um Ihre Add-ons in Firefox 9 zum Laufen zu bringen.
XUL
- Das
<xul:tab>
Element hat jetzt einpending
Attribut, dessen Werttrue
ist, wenn die Registerkarte durch den Sitzungswiederherstellungsdienst wiederhergestellt wird. Dies kann zum Stylen der Registerkarte in Themen verwendet werden. Das Attribut ist bei Registerkarten, die nicht ausstehend sind, nicht vorhanden. - Das
<xul:tab>
Element hat jetzt einunread
Attribut, dessen Werttrue
ist, wenn sich die Registerkarte seit ihrer letzten Aktivierung geändert hat oder wenn sie nach Beginn der aktuellen Sitzung nicht ausgewählt wurde. Das Attribut ist bei Registerkarten, die nicht ungelesen sind, nicht vorhanden. - Es kann jetzt ein
<xul:panel>
als Ziehbild für Drag & Drop-Operationen im DOM verwendet werden. Dies ermöglicht es, die standardmäßige Drag & Drop-API für Drag & Drop von XUL-Inhalten zu verwenden. - Die
appendNotification
Methode des<xul:notificationbox>
Elements ermöglicht es nun, eine Rückruf-Funktion zu spezifizieren, die bei interessanten Ereignissen im Zusammenhang mit der Benachrichtigungsbox aufgerufen wird. Derzeit ist das einzige Ereignis "removed", das Ihnen mitteilt, dass die Box aus ihrem Fenster entfernt wurde.
JavaScript Code-Modul-Änderungen
FileUtils.jsm
hat jetzt einenFile
Konstruktor, der einnsIFile
Objekt zurückgibt, das eine durch ihren Dateipfad angegebene Datei repräsentiert.
Dienständerungen
- Der Präferenzdienst für Inhalte behandelt jetzt den privaten Modus beim Durchsuchen (siehe Firefox Bug 679784).
NSPR
- NSPR hat jetzt ein "Anhänge"-Modul, das es ermöglicht, neue Daten an das Ende eines vorhandenen Protokolls anzuhängen.
Schnittstellenänderungen
Entfernte Schnittstellen
nsIGlobalHistory3
wurde während der Straffung des Places und DocShell Codes entfernt.
Verschiedene Schnittstellenänderungen
- Die
nsISound
Schnittstelle hat eine neue Konstante,EVENT_EDITOR_MAX_LEN
. Dies ermöglicht die Wiedergabe des Systemklangs, wenn mehr Zeichen als erlaubt in ein Textfeld eingegeben werden. Derzeit wird dies nur unter Windows verwendet. - Die
nsIScriptError2
Schnittstelle hat neuetimeStamp
undinnerWindowID
Eigenschaften; außerdem nimmt dieinitWithWindowID()
Methode jetzt eine innere Fenster-ID anstelle einer äußeren Fenster-ID entgegen. - Das Attribut
nsIBidiKeyboard.haveBidiKeyboards
wurde hinzugefügt; damit können Sie feststellen, ob das System mindestens eine Tastatur für jede Richtung installiert hat: von links nach rechts und von rechts nach links. - Das neue Attribut
nsIEditor.isSelectionEditable
ermöglicht es Ihnen festzustellen, ob der aktuelle Auswahlanker bearbeitbar ist. Dies hilft, Fälle zu unterstützen, in denen nur Teile des Dokuments bearbeitbar sind, indem Sie erkennen können, ob die aktuelle Auswahl in einem bearbeitbaren Abschnitt liegt. - Die Methoden
nsIBrowserHistory.registerOpenPage()
undnsIBrowserHistory.unregisterOpenPage()
wurden im Rahmen einer Leistungsüberholung des Places-Systems entfernt. Stattdessen können Sie die entsprechenden Methoden inmozIPlacesAutoComplete
verwenden. - Die Methode
nsIDOMWindowUtils.wrapDOMFile()
wurde hinzugefügt; diese gibt ein DOMFile
Objekt für ein gegebenesnsIFile
zurück. - Die Methode
nsIChromeFrameMessageManager.removeDelayedFrameScript()
wurde hinzugefügt, um das Entfernen verzögerter Ladeskripte zu unterstützen. Bootstrapping-Add-ons sollten dies beim Herunterfahren verwenden, um alle Skripte zu entfernen, die es mitnsIChromeFrameMessageManager.loadFrameScript()
mit dem verzögerten Ladeflag geladen hat. Dies ist für Add-ons alsbrowser.messageManager.removeDelayedFrameScript()
zugänglich. - Die
nsIAppStartup
Schnittstelle hat ein neuesinterrupted
Attribut, das Ihnen mitteilt, ob der Startvorgang irgendwann durch eine interaktive Eingabeaufforderung unterbrochen wurde. Dies kann beispielsweise hilfreich sein, wenn Sie Starts während der Leistungsbewertung zeitlich erfassen, um Zahlen von unterbrochenen Sitzungen herauszufiltern. - Die
nsIEditorSpellCheck
Schnittstelle wurde überarbeitet, um die Auswahl von Rechtschreibprüfungswörterbüchern pro Seite zu unterstützen.
IDL Parser
Der IDL Parser enthält keine Unterstützung mehr für das nie vollständig implementierte Konzept von eindeutigen Zeigern.
Buildsystemänderungen
- Die Option
--enable-application=standalone
zum Bauen von standalone XPConnect wurde entfernt; es hat seit 2007 sowieso nicht mehr funktioniert. - Die Unterstützung für den unabhängigen Bau von Necko und Transformiix XSLT wurde entfernt; Sie können nicht länger
--enable-application=network
oder--enable-application=content/xslt
verwenden. - Das Buildsystem sucht jetzt nach
.mozconfig
in$topsrcdir/.mozconfig
oder$topsrcdir/mozconfig
und nirgendwo sonst, es sei denn, Sie überschreiben den.mozconfig
Pfad mit derMOZCONFIG
Umgebungsvariablen. - Das
xpidl
Dienstprogramm wurde im SDK durchpyxpidl
ersetzt.
Andere Änderungen
- Der Rechtschreibprüfer hat kein willkürliches Limit von 130 Zeichen mehr für die Wortlänge, die er versucht zu überprüfen. Dieses Limit war zuvor vorhanden, um Abstürze zu verhindern, die im Rechtschreibprüfer auftraten, aber die zugrunde liegenden Fehler wurden inzwischen behoben.
- Sie können jetzt Komponenten registrieren, um Funktionen zu dem
window.navigator
Objekt hinzuzufügen, indem Sie die Kategorie "JavaScript-navigator-property" verwenden.