Firefox 9 für Entwickler
Firefox 9 wurde für Windows am 20. Dezember 2011 veröffentlicht. Die Mac- und Linux-Version 9.0.1, die einen in letzter Minute entdeckten Absturzfehler behebt, wurde am 21. Dezember 2011 veröffentlicht.
Änderungen für Webentwickler
HTML
- Das
value
Attribut des<li>
kann jetzt negativ sein. Bisher wurden negative Werte in 0 umgewandelt. - Sie können nun die Start- und Stopzeit von Medien in der URI der Medien festlegen, wenn Sie
<audio>
und<video>
Elemente verwenden. <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 Telefons aufzunehmen, ohne den Browser zu verlassen, wenn das
<input>
Element mittype="file"
undaccept="image/*"
verwendet wird. - PNG ICO-Bilder im Windows Vista-Stil werden jetzt unterstützt.
- Das Zeichnen von Bildern, die das
crossorigin
Attribut verwenden, um CORS-Zugriff anzufordern, führt nicht länger fälschlicherweise zu einer Verfälschung des Canvas, wenn CORS gewährt wird. - Der Wert des
rowspan
Attributs kann nun bis zu 65.534 betragen, zuvor lag das Limit bei 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 mit dem
<link>
Element inkludiertes Stylesheet vollständig geladen und geparst wurde (aber noch nicht auf das Dokument angewendet wurde), wird nun einload
Ereignis ausgelöst. Auch bei einem Fehler beim Verarbeiten eines Stylesheets wird einerror
Ereignis ausgelöst. - Sie können jetzt Überlaufeinstellungen sowohl für die linke als auch die rechte Kante von Inhalten mit einer neuen Zweisyntax für die
text-overflow
angeben.
JavaScript
Keine Änderungen.
DOM
- Verwendung des Vollbildmodus
-
Die neue Fullscreen-API bietet eine Möglichkeit, Inhalte über den gesamten Bildschirm darzustellen, ohne Browser-Schnittstelle. Dies ist großartig für Videos und Spiele. Diese API ist derzeit experimentell und mit Präfix versehen.
- Die
Node.contains()
Methode ist jetzt implementiert; diese ermöglicht es Ihnen, zu bestimmen, ob ein bestimmter Knoten ein Nachkomme eines anderen Knotens ist. - Das
Node.parentElement
Attribut wurde implementiert; es gibt das übergeordneteElement
eines DOM-Knotens zurück odernull
, wenn das übergeordnete Element kein Element ist. - DOM Level 3 Composition-Ereignisse werden jetzt unterstützt.
- Das
Document.scripts
Attribut wurde implementiert; es gibt eineHTMLCollection
aller<script>
Elemente im Dokument zurück. - Die
Document.queryCommandSupported()
Methode wurde implementiert. - Der Satz von Ereignissen, die auf
<body>
Elementen abgehört werden können, wurde überarbeitet, um mit dem neuesten Entwurf der HTML5-Spezifikation übereinzustimmen. Die Liste der Ereignisse in der DOM-Ereignisreferenz zeigt, welche Ereignisse auf<body>
abgehört werden können. - Das
readystatechange
Ereignis wird nun, wie vorgesehen, nur noch auf demDocument
ausgelöst. - Ereignis-Handler werden nun als Standard-IDL-Schnittstellen implementiert. In den meisten Fällen wirkt sich dies nicht auf den Inhalt aus, es gibt jedoch Ausnahmen.
- Ein neuer Antworttyp,
"moz-json"
, wurde zuXMLHttpRequest
hinzugefügt, wodurchXMLHttpRequest
automatisch JSON Zeichenfolgen für Sie parsen kann; 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 nur durch Verfolgen von "progress" Ereignissen erfassen, und müssen nicht mehr auch "load" Ereignisse überwachen, um den Empfang des letzten Datenstücks zu erkennen.- In der Vergangenheit führte der Aufruf von
addEventListener()
mit einemnull
Listener zu einer Ausnahme. Jetzt kehrt es ohne Fehler und ohne Effekt zurück. - Die neue
navigator.doNotTrack
Eigenschaft ermöglicht es Ihren Inhalten, einfach zu bestimmen, ob der Benutzer seine Präferenz zum Nichtverfolgen aktiviert hat; wenn dieser Wert "yes" ist, sollten Sie den Benutzer nicht verfolgen. 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, anstattnull
. window.navigator.taintEnabled
wurde entfernt; es wurde seit vielen Jahren nicht mehr unterstützt.
Workers
- In Blob-URLs implementierte Worker waren in Firefox 8 fehlerhaft und funktionieren ab Firefox 9 wieder.
WebGL
- Die WebGL Kontextattribute
drawingBufferWidth
unddrawingBufferHeight
werden jetzt unterstützt.
MathML
- Der nicht standardisierte
restyle
Wert für dasactiontype
Attribut auf<maction>
Elementen wurde entfernt. - Obwohl weiterhin nicht unterstützt, wird die Verwendung des
mlabeledtr
Elements nicht länger das Rendering vollständig unterbrechen. Siehe Firefox-Bug 689641 für Fortschritte bei der tatsächlichen Unterstützung dieses Elements.
Networking
- Sie können jetzt den Inhalt von JavaScript typisierten Arrays (d.h. den Inhalt eines
ArrayBuffer
Objekts) mithilfe von XMLHttpRequest senden. - WebSocket-Verbindungen erlauben jetzt Nicht-Zeichen in ansonsten gültigen UTF-8-Datenrahmen statt zu fehlschlagen.
- Der HTTP
Accept
Header für XSLT-Anfragen wurde der Einfachheit halber auf*/*
geändert. Da das Abrufen von XSLT ohnehin immer auf*/*
zurückgefallen ist, ergab es Sinn, die anfängliche Anfrage zu vereinfachen. - Serverversuche, den Benutzer mit den Antwortcodes
301 Moved Permanently
oder307 Temporary Redirect
auf einejavascript:
URI umzuleiten, führen jetzt zu einem "bad connection" Fehler statt tatsächlich umzuleiten. Dies verhindert bestimmte Arten von Cross-Site-Scripting-Angriffen. - Inhalte, die mit einer leeren
Content-Disposition
gesendet werden, wurden bisher so behandelt, als ob dieContent-Disposition
"attachment" wäre; dies funktionierte nicht immer wie erwartet. Diese werden jetzt so behandelt, als ob dieContent-Disposition
"inline" wäre. - Die Standard-Höchstgröße eines Elements im Disk-Cache wurde auf 50 MB erhöht; zuvor wurden nur Elemente bis zu 5 MB zwischengespeichert.
Entwicklerwerkzeuge
- Die Web-Konsole unterstützt jetzt grundlegende String-Ersetzungen in ihren Logging-Methoden.
- Sie können jetzt visuell verschachtelte Ausgabeblöcke in der Web-Konsole erstellen, um die Lesbarkeit zu verbessern.
Ä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 möglicherweise vornehmen müssen, damit Ihre Add-ons in Firefox 9 funktionieren.
XUL
- Das
<xul:tab>
Element hat jetzt einpending
Attribut, dessen Werttrue
ist, wenn der Tab momentan vom Sitzungsdienst wiederhergestellt wird. Dies kann für die Stilgestaltung des Tabs in Themes verwendet werden. Das Attribut ist auf Tabs, die nicht ausstehend sind, nicht vorhanden. - Das
<xul:tab>
Element hat jetzt einunread
Attribut, dessen Werttrue
ist, wenn sich der Tab seit dem letzten Mal, als er der aktive Tab war, geändert hat oder wenn er seit Beginn der aktuellen Sitzung nicht ausgewählt wurde. Das Attribut ist auf Tabs, die nicht ungelesen sind, nicht vorhanden. - Sie können jetzt ein
<xul:panel>
als Ziehbild für DOM Drag-and-Drop-Operationen verwenden. Dies ermöglicht es Ihnen, die Standard-Drag & Drop-API für Drag & Drop von XUL-Inhalten zu verwenden. - Die
appendNotification
Methode des<xul:notificationbox>
Elements ermöglicht es Ihnen jetzt, einen Callback zu spezifizieren, der für interessante Ereignisse im Zusammenhang mit dem Notificationbox aufgerufen wird. Derzeit ist das einzige Ereignis "removed", das Ihnen mitteilt, dass der Kasten aus seinem Fenster entfernt wurde.
Änderungen im JavaScript-Code-Modul
FileUtils.jsm
hat jetzt einenFile
Konstruktor, der einnsIFile
Objekt zurückgibt, das eine Datei darstellt, die durch ihren Pfadnamen spezifiziert ist.
Dienständerungen
- Der Inhaltspräferenzdienst unterstützt jetzt das private Browsing (siehe Firefox-Bug 679784).
NSPR
- NSPR hat jetzt ein "append" Modul, das Ihnen erlaubt, neue Daten an das Ende eines bestehenden Logs anzufügen.
Schnittstellenänderungen
Entfernte Schnittstellen
nsIGlobalHistory3
wurde während der Bereinigung des Places- und DocShell-Codes entfernt.
Verschiedene Schnittstellenänderungen
- Die
nsISound
Schnittstelle hat eine neue Konstante,EVENT_EDITOR_MAX_LEN
. Dies ermöglicht das Abspielen des Systemgeräuschs, wenn mehr Zeichen als die maximal erlaubten in ein Textfeld eingegeben werden. Derzeit wird dies nur auf Windows verwendet. - Die
nsIScriptError2
Schnittstelle hat neue EigenschaftentimeStamp
undinnerWindowID
; außerdem nimmt dieinitWithWindowID()
Methode jetzt eine innere Fenster-ID anstelle einer äußeren Fenster-ID. - Das
nsIBidiKeyboard.haveBidiKeyboards
Attribut wurde hinzugefügt; dieses erlaubt Ihnen zu bestimmen, 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 ermöglicht es Ihnen zu bestimmen, ob der aktuelle Auswahlanker bearbeitbar ist. Dies hilft, Fälle zu unterstützen, 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
nsIDOMWindowUtils.wrapDOMFile()
Methode wurde hinzugefügt; diese gibt ein DOMFile
Objekt für eine gegebenensIFile
zurück. - Die
nsIChromeFrameMessageManager.removeDelayedFrameScript()
Methode wurde hinzugefügt, um das Entfernen von verzögert geladenen Skripten zu unterstützen. Bootstrap-Add-ons sollten dies beim Herunterfahren verwenden, um alle Skripte zu entfernen, die sie mitnsIChromeFrameMessageManager.loadFrameScript()
mit gesetztem verzögerten Lade-Flag geladen haben. Dies wird für Add-ons alsbrowser.messageManager.removeDelayedFrameScript()
bereitgestellt. - Die
nsIAppStartup
Schnittstelle hat ein neuesinterrupted
Attribut, das Ihnen mitteilt, ob der Startprozess zu irgendeinem Zeitpunkt durch eine interaktive Eingabeaufforderung unterbrochen wurde. Dies kann hilfreich sein, zum Beispiel beim Timing von Starts während der Leistungsauswertung, um Zahlen aus Sitzungen ausschließen zu können, die unterbrochen wurden. - Die
nsIEditorSpellCheck
Schnittstelle wurde überarbeitet, um die Auswahl von Rechtschreibprüfer-Dictionaries pro Website zu unterstützen.
IDL-Parser
Der IDL-Parser unterstützt nicht länger die nie vollständig implementierte Vorstellung von eindeutigen Zeigern.
Änderungen im Build-System
- Die
--enable-application=standalone
Option zum Erstellen von XPConnect als eigenständige Anwendung wurde entfernt; es hat seit 2007 ohnehin nicht funktioniert. - Die Unterstützung für den eigenständigen Aufbau von Necko und Transformiix XSLT wurde entfernt; Sie können
--enable-application=network
oder--enable-application=content/xslt
nicht mehr verwenden. - Das Build-System sucht jetzt nach
.mozconfig
unter$topsrcdir/.mozconfig
oder$topsrcdir/mozconfig
und nirgendwo anders, es sei denn, Sie überschreiben den.mozconfig
Pfad mit der UmgebungsvariableMOZCONFIG
. - Das
xpidl
Dienstprogramm wurde im SDK durchpyxpidl
ersetzt.
Weitere Änderungen
- Der Rechtschreibprüfer hat nicht mehr ein willkürliches Limit von 130 Zeichen für die Wortlänge, dessen Worte er auf Rechtschreibung überprüfen würde. Dieses Limit war zuvor zur Vermeidung von Abstürzen im Rechtschreibprüfer vorhanden, aber die zugrunde liegenden Fehler wurden inzwischen behoben.
- Sie können jetzt Komponenten registrieren, um Funktionen zum
window.navigator
Objekt hinzuzufügen, indem Sie die Kategorie "JavaScript-navigator-property" verwenden.