Firefox 9 für Entwickler
Firefox 9 wurde für Windows am 20. Dezember 2011 veröffentlicht. Die Versionen 9.0.1 für Mac und Linux, die einen in letzter Minute entdeckten Absturzfehler beheben, wurden am 21. Dezember 2011 veröffentlicht.
Änderungen für Webentwickler
HTML
- Das
value
Attribut von<li>
kann jetzt negativ sein. Zuvor wurden negative Werte auf 0 konvertiert. - Sie können jetzt die Start- und Stoppzeit von Medien angeben in der URI der Medien, wenn Sie die
<audio>
und<video>
Elemente verwenden. <input>
und<textarea>
Elemente respektieren jetzt den Wert deslang
Attributs, wenn die Rechtschreibprüfung aufgerufen wird.- Firefox auf Android ermöglicht es Benutzern jetzt, Fotos mit der Kamera des Telefons 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.
- Beim Zeichnen von Bildern, die das
crossorigin
Attribut verwenden, um CORS-Zugriff anzufordern, werden die Canvas nicht mehr fälschlicherweise durchkreuzt, wenn CORS gewährt wird. - Der Wert des
rowspan
Attributs kann jetzt so groß wie 65.534 sein, statt 8190.
CSS
- Die
font-stretch
Eigenschaft wird jetzt unterstützt. - Die
columns
Eigenschaft wird jetzt mit dem-moz
Präfix unterstützt. Dies ist eine Kurzform für die folgenden Eigenschaften:column-width
undcolumn-count
. - Wenn ein Stylesheet, das mit dem
<link>
Element eingebunden wurde, vollständig geladen und analysiert wurde (aber noch nicht auf das Dokument angewendet wurde), wird jetzt einload
Ereignis ausgelöst. Außerdem wird einerror
Ereignis ausgelöst, wenn ein Fehler bei der Verarbeitung eines Stylesheets auftritt. - Sie können jetzt Überlaufeinstellungen sowohl für den linken als auch den rechten Rand von Inhalten mit einer neuen Zwei-Wert-Syntax für
text-overflow
angeben.
JavaScript
Keine Änderung.
DOM
- Verwendung des Vollbildmodus
-
Die neue Fullscreen-API bietet eine Möglichkeit, Inhalte im gesamten Bildschirm anzuzeigen, ohne Browser-Oberfläche. Dies ist ideal für Videos und Spiele. Diese API ist derzeit experimentell und mit Präfixen versehen.
- Die Methode
Node.contains()
ist jetzt implementiert; so können Sie feststellen, ob ein gegebener Knoten ein Nachfahre eines anderen Knotens ist. - Das Attribut
Node.parentElement
wurde implementiert; es gibt das übergeordneteElement
eines DOM-Knotens zurück odernull
, wenn das übergeordnete Element kein Element ist. - DOM Level 3 Zusammensetzungsereignisse 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 Menge der Ereignisse, die auf
<body>
Elementen empfangen werden können, wurde überarbeitet, um dem neuesten Entwurf der HTML5-Spezifikation zu entsprechen. Die Liste der Ereignisse in der DOM-Ereignisreferenz spiegelt wider, für welche Ereignisse auf<body>
gehört werden kann. - Das
readystatechange
Ereignis wird jetzt nur noch auf demDocument
ausgelöst, wie beabsichtigt. - Ereignis-Handler werden jetzt als Standard-IDL-Schnittstellen implementiert. In den meisten Fällen wird sich dies nicht auf Inhalte auswirken, es gibt jedoch Ausnahmen.
- Ein neuer Antworttyp,
"moz-json"
, wurde zuXMLHttpRequest
hinzugefügt, sodassXMLHttpRequest
automatisch JSON Zeichenfolgen für Sie parst; 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 Datenfragment gesendet; in der Vergangenheit war es möglich, dass das letzte empfangene Datenfragment kein "progress" Ereignis auslöste. Jetzt können Sie den Fortschritt nur durch Verfolgen von "progress" Ereignissen überwachen, anstatt auch "load" Ereignisse zu überwachen, um den Empfang des letzten Datenfragments zu erkennen.- In der Vergangenheit löste das Aufrufen von
addEventListener()
mit einemnull
Listener eine Ausnahme aus. Jetzt wird es ohne Fehler und ohne Wirkung zurückgegeben. - Die neue
navigator.doNotTrack
Eigenschaft ermöglicht es Ihren Inhalten, einfach festzustellen, ob der Benutzer seine Do-Not-Track-Präferenz aktiviert hat; wenn dieser Wert "yes" ist, sollten Sie den Benutzer nicht tracken. Range
undSelection
Objekte verhalten sich jetzt gemäß ihren 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, stattnull
. window.navigator.taintEnabled
wurde entfernt; es wurde seit vielen Jahren nicht mehr unterstützt.
Workers
- In Blob-URLs implementierte Workers waren in Firefox 8 fehlerhaft und funktionieren ab Firefox 9 wieder.
WebGL
- Die WebGL Kontextattribute
drawingBufferWidth
unddrawingBufferHeight
werden jetzt unterstützt.
MathML
- Der nicht-standardmäßige
restyle
Wert für dasactiontype
Attribut auf<maction>
Elementen wurde entfernt. - Obwohl noch nicht unterstützt, bricht die Verwendung des
mlabeledtr
Elements das Rendering nicht mehr vollständig. Siehe Firefox Bug 689641 für den Fortschritt der tatsächlichen Unterstützung dieses Elements.
Netzwerk
- Sie können jetzt den Inhalt von JavaScript getypten Arrays (d.h. den Inhalt eines
ArrayBuffer
Objekts) mit XMLHttpRequest senden. - WebSocket-Verbindungen erlauben jetzt das Empfangen von Nicht-Zeichen in ansonsten gültigen UTF-8-Datenframes, statt fehlzuschlagen.
- Der HTTP
Accept
Header für XSLT-Anfragen wurde aus Einfachheitsgründen auf*/*
geändert. Da das Abrufen von XSLT ohnehin immer auf*/*
zurückfiel, war es sinnvoll, die ursprüngliche Anfrage zu vereinfachen. - Versuche eines Servers, die Antwortcodes
301 Moved Permanently
oder307 Temporary Redirect
zu verwenden, um den Benutzer zu einerjavascript:
URI umzuleiten, führen jetzt zu einem Fehler "schlechte Verbindung" statt tatsächlich umgeleitet zu werden. Dies verhindert bestimmte Arten von Cross-Site-Scripting-Angriffen. - Inhalte, die mit leerem
Content-Disposition
ausgeliefert werden, wurden bisher so behandelt, als ob dasContent-Disposition
"attachment" wäre; das funktionierte nicht immer wie erwartet. Diese werden jetzt so behandelt, als ob dasContent-Disposition
"inline" wäre. - Die standardmäßige maximale Größe eines Elements im Festplattencache wurde auf 50 MB erhöht; zuvor wurden nur Elemente bis zu 5 MB zwischengespeichert.
Entwickler-Tools
- Die Webkonsole unterstützt jetzt grundlegende Zeichenfolgenersetzungen in ihren Logging-Methoden.
- Sie können jetzt visuell verschachtelte Blöcke von Ausgaben erstellen in der Webkonsole, um die Lesbarkeit zu erleichtern.
Änderungen für Mozilla- und Add-on-Entwickler
Siehe Aktualisieren 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 das Tab momentan vom Sitzungswiederherstellungsdienst wiederhergestellt wird. Dies kann zum Stylen des Tabs in Themes verwendet werden. Das Attribut ist bei Tabs, die nicht ausstehend sind, nicht vorhanden. - Das
<xul:tab>
Element hat jetzt einunread
Attribut, dessen Werttrue
ist, wenn sich die Registerkarte geändert hat seit dem letzten Mal, als sie die aktive Registerkarte war oder wenn sie seit Beginn der aktuellen Sitzung nicht ausgewählt wurde. Das Attribut ist bei Tabs, die nicht ungelesen sind, nicht vorhanden. - Sie können jetzt ein
<xul:panel>
als Drag-Bild für DOM-Drag-and-Drop-Operationen verwenden. Dies ermöglicht es Ihnen, die Standard Drag & Drop API für Drag-and-Drop von XUL-Inhalten zu verwenden. - Die Methode
appendNotification
des<xul:notificationbox>
Elements lässt Sie jetzt einen Callback angeben, der für interessante Ereignisse im Zusammenhang mit dem Benachrichtigungskasten aufgerufen wird. Derzeit ist das einzige Ereignis "removed", das Ihnen mitteilt, dass der Kasten aus seinem Fenster entfernt wurde.
Änderungen am JavaScript-Code-Modul
FileUtils.jsm
hat jetzt einenFile
Konstruktor, der einnsIFile
Objekt zurückgibt, das eine durch ihren Pfadnamen angegebene Datei darstellt.
Dienständerungen
- Der Inhaltspräferenzdienst unterstützt jetzt den privaten Modus (siehe Firefox Bug 679784).
NSPR
- NSPR hat jetzt ein "append" Modul, das es Ihnen ermöglicht, neue Daten an das Ende eines bestehenden Protokolls anzufügen.
Schnittstellenänderungen
Entfernte Schnittstellen
nsIGlobalHistory3
wurde während der Vereinfachung des Places- und DocShell-Codes entfernt.
Verschiedene Schnittstellenänderungen
- Die
nsISound
Schnittstelle hat eine neue Konstante,EVENT_EDITOR_MAX_LEN
. Diese ermöglicht das Abspielen des Systemtons, wenn mehr Zeichen als erlaubt in ein Textfeld eingegeben werden. Derzeit wird dies nur unter Windows genutzt. - Die
nsIScriptError2
Schnittstelle hat neuetimeStamp
undinnerWindowID
Eigenschaften; außerdem nimmt dieinitWithWindowID()
Methode jetzt eine innere Fenster-ID statt einer äußeren Fenster-ID. - Das
nsIBidiKeyboard.haveBidiKeyboards
Attribut wurde hinzugefügt; dies ermöglicht es Ihnen festzustellen, ob das System mindestens eine Tastatur für jede Richtung installiert hat: von links nach rechts und von rechts nach links. - Das neue
nsIEditor.isSelectionEditable
Attribut lässt Sie feststellen, ob der aktuelle Auswahlanker bearbeitbar ist. Dies unterstützt Fälle, in denen nur Teile des Dokuments bearbeitbar sind, indem Sie sehen können, ob die aktuelle Auswahl in einem bearbeitbaren Abschnitt ist. - Die Methoden
nsIBrowserHistory.registerOpenPage()
undnsIBrowserHistory.unregisterOpenPage()
wurden im Rahmen einer Leistungsüberholung im Places-System entfernt. Sie können stattdessen die entsprechenden Methoden inmozIPlacesAutoComplete
verwenden. - Die Methode
nsIDOMWindowUtils.wrapDOMFile()
wurde hinzugefügt; diese gibt ein DOMFile
Objekt für eine gegebenensIFile
zurück. - Die Methode
nsIChromeFrameMessageManager.removeDelayedFrameScript()
wurde hinzugefügt, um Entfernen von verzögerten Ladeskripten zu unterstützen. Bootstrap-Add-ons sollten dies beim Herunterfahren verwenden, um alle Skripte, die es mitnsIChromeFrameMessageManager.loadFrameScript()
geladen hat, mit dem verzögerten Ladeflag zu entfernen. Dies wird Add-ons alsbrowser.messageManager.removeDelayedFrameScript()
offengelegt. - Die
nsIAppStartup
Schnittstelle hat ein neuesinterrupted
Attribut, das Ihnen mitteilt, ob der Startprozess irgendwann durch eine interaktive Aufforderung unterbrochen wurde. Dies kann hilfreich sein, um beispielsweise Startvorgänge während der Leistungsmessung zu zeitlich bestimmen, um Zahlen aus Sitzungen auszuschließen, die unterbrochen wurden. - Die
nsIEditorSpellCheck
Schnittstelle wurde überarbeitet, um die Auswahl von Rechtschreibprüfungswörterbüchern pro Website zu unterstützen.
IDL-Parser
Der IDL-Parser unterstützt nicht mehr den niemals vollständig implementierten Begriff einzigartiger Zeiger.
Änderungen am Build-System
- Die
--enable-application=standalone
Option für den Bau von standalone XPConnect wurde entfernt; sie hat ohnehin seit 2007 nicht mehr funktioniert. - Die Unterstützung zum Bauen von eigenständigem Necko und Transformiix XSLT wurde entfernt; sie können nicht mehr
--enable-application=network
oder--enable-application=content/xslt
verwenden. - Das Build-System sucht jetzt
.mozconfig
bei$topsrcdir/.mozconfig
oder$topsrcdir/mozconfig
, und nirgendwo sonst, es sei denn, Sie überschreiben den.mozconfig
Pfad mithilfe derMOZCONFIG
Umgebungsvariable. - Das
xpidl
Dienstprogramm wurde im SDK durchpyxpidl
ersetzt.
Sonstige Änderungen
- Der Rechtschreibprüfer hat nicht mehr die willkürliche 130-Zeichen-Grenze für die Länge von Wörtern, die er versuchen wird, zu prüfen. Diese Grenze 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 dem
window.navigator
Objekt Funktionen hinzuzufügen, indem Sie die Kategorie "JavaScript-navigator-property" verwenden.