Firefox 9 für Entwickler
Firefox 9 wurde am 20. Dezember 2011 für Windows 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 nun negativ sein. Zuvor wurden negative Werte in 0 umgewandelt. - 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 beachten nun den Wert deslang
-Attributs, wenn die Rechtschreibprüfung aktiviert wird.- Firefox auf Android erlaubt es Benutzern jetzt, Fotos mit der Kamera ihres Telefons zu machen, 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.
- Bilder, die das
crossorigin
Attribut verwenden, um CORS-Zugriff anzufordern, beeinträchtigen den Canvas nicht mehr fälschlicherweise, wenn CORS gewährt wird. - Der Wert des
rowspan
Attributs kann jetzt bis zu 65.534 betragen, statt vorher 8190.
CSS
- Die
font-stretch
-Eigenschaft wird nun 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 wurde, vollständig geladen und geparst (aber noch nicht auf das Dokument angewendet) wurde, wird nun einload
-Ereignis ausgelöst. Außerdem wird bei einem Fehler beim Verarbeiten eines Stylesheets einerror
-Ereignis ausgelöst. - Sie können jetzt Überlauf-Einstellungen für beide Randseiten von Inhalten mit einer neuen Zweiwert-Syntax für
text-overflow
angeben.
JavaScript
Keine Änderung.
DOM
- Verwendung des Vollbildmodus
-
Die neue Fullscreen-API bietet eine Möglichkeit, Inhalte ohne Browser-Oberfläche im Vollbildformat darzustellen. Dies ist ideal für Videos und Spiele. Diese API ist derzeit experimentell und mit einem Präfix versehen.
- Die
Node.contains()
-Methode ist nun implementiert; damit können Sie feststellen, ob ein bestimmter Knoten ein Nachfolger 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 Zusammensetzungsereignisse 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. - Die Reihe 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 jetzt nur auf demDocument
ausgelöst, wie vorgesehen. - Ereignishandler werden jetzt als Standard-IDL-Schnittstellen implementiert. In den meisten Fällen wird dies den Inhalt nicht beeinflussen, es gibt jedoch Ausnahmen.
- Ein neuer Antworttyp,
"moz-json"
, wurde zuXMLHttpRequest
hinzugefügt, wodurchXMLHttpRequest
automatisch JSON-Strings für Sie parsen kann; wenn Sie diesen Typ anfordern, wird ein zurückgegebener JSON-String geparst, sodass der Wert derresponse
-Eigenschaft das resultierende JavaScript-Objekt ist. XMLHttpRequest
"progress"-Ereignisse werden jetzt zuverlässig für jedes empfangene Datenpaket gesendet; in der Vergangenheit war es möglich, dass das letzte empfangene Datenpaket kein "progress"-Ereignis auslöste. Jetzt können Sie den Fortschritt nur durch Verfolgen von "progress"-Ereignissen überwachen, anstatt auch "load"-Ereignisse überwachen zu müssen, um den Empfang des letzten Datenpakets zu erkennen.- In der Vergangenheit würde ein Aufruf von
addEventListener()
mit einemnull
-Listener eine Ausnahme werfen. Jetzt wird es ohne Fehler und ohne Effekt zurückgegeben. - Die neue
navigator.doNotTrack
-Eigenschaft ermöglicht es Ihrem Inhalt, leicht festzustellen, ob der Nutzer seine Do-not-Track-Einstellung aktiviert hat; wenn dieser Wert "yes" ist, sollten Sie den Nutzer 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, für dascreateDocumentType()
aufgerufen wurde, um den Knoten zu erstellen, anstattnull
. window.navigator.taintEnabled
wurde entfernt; es wurde seit vielen Jahren nicht mehr unterstützt.
Workers
- Workers, die in Blob-URLs implementiert sind, waren in Firefox 8 defekt 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, führt die Verwendung des
mlabeledtr
-Elements nicht mehr zu einem vollständigen Darstellungsfehler. Siehe Firefox Bug 689641 für den Fortschritt bei der tatsächlichen Unterstützung dieses Elements.
Netzwerk
- Sie können jetzt die Inhalte von JavaScript typisierte Arrays (d.h. die Inhalte eines
ArrayBuffer
-Objekts) mit XMLHttpRequest senden. - WebSocket-Verbindungen erlauben jetzt Nicht-Zeichen in ansonsten gültigen UTF-8-Datenrahmen, anstatt zu scheitern.
- Der HTTP
Accept
-Header für XSLT-Anfragen wurde aus Gründen der Einfachheit 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, den Benutzer mit den Antwortcodes
301 Moved Permanently
oder307 Temporary Redirect
zu einerjavascript:
-URI umzuleiten, führen jetzt zu einem Fehler "schlechte Verbindung" anstelle einer tatsächlichen Umleitung. Dies verhindert bestimmte Arten von Cross-Site-Scripting-Angriffen. - Inhalte, die mit einem leeren
Content-Disposition
-Header bereitgestellt wurden, wurden zuvor so behandelt, als ob dieContent-Disposition
"attachment" wäre; dies funktionierte nicht immer wie erwartet. Diese werden jetzt so behandelt, als wäre dieContent-Disposition
"inline". - 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.
Entwicklerwerkzeuge
- Die Webkonsole unterstützt jetzt grundlegende String-Ersatzmethoden in ihren Protokollierungsmethoden.
- Sie können jetzt visuell geschachtelte Ausgabeblöcke 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 möglicherweise vornehmen müssen, um Ihre Add-ons in Firefox 9 funktionsfähig zu machen.
XUL
- Das
<xul:tab>
-Element hat jetzt einpending
-Attribut, dessen Werttrue
ist, wenn der Tab gerade vom Sitzungswiederherstellungsdienst wiederhergestellt wird. Dies kann verwendet werden, um den Tab in Themes zu stylen. Das Attribut ist bei 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 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
appendNotification
-Methode des<xul:notificationbox>
-Elements ermöglicht es jetzt, einen Rückruf anzugeben, der bei interessanten Ereignissen, die die Benachrichtigungsbox betreffen, aufgerufen wird. Derzeit ist das einzige Ereignis "removed", das Ihnen mitteilt, dass die Box aus ihrem Fenster entfernt wurde.
Änderungen an JavaScript-Code-Modulen
FileUtils.jsm
hat jetzt einenFile
-Konstruktor, der einnsIFile
-Objekt zurückgibt, das eine durch ihren Pfadnamen angegebene Datei darstellt.
Dienständerungen
- Der Inhaltspräferenzdienst behandelt jetzt das private Surfen (siehe Firefox Bug 679784).
NSPR
- NSPR hat jetzt ein "append"-Modul, das es Ihnen ermöglicht, neue Daten an das Ende eines vorhandenen Protokolls anzufügen.
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
. Diese ermöglicht es, den Systemton abzuspielen, wenn mehr Zeichen als die maximal erlaubten 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. - Das
nsIBidiKeyboard.haveBidiKeyboards
-Attribut 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
nsIEditor.isSelectionEditable
-Attribut ermöglicht es Ihnen zu bestimmen, ob der aktuelle Auswahlanker bearbeitbar ist. Dies hilft bei der Unterstützung von Fällen, in denen nur Teile des Dokuments bearbeitbar sind, indem Sie sehen können, ob die aktuelle Auswahl in einem bearbeitbaren Abschnitt liegt. - Die
nsIBrowserHistory.registerOpenPage()
- undnsIBrowserHistory.unregisterOpenPage()
-Methoden wurden im Rahmen einer Leistungsüberarbeitung 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. Bootstrapped-Add-ons sollten dies beim Herunterfahren verwenden, um alle Skripte, die es mit der verzögerten Lade-Flagge mitnsIChromeFrameMessageManager.loadFrameScript()
geladen hat, zu entfernen. Dies wird Add-ons alsbrowser.messageManager.removeDelayedFrameScript()
bereitgestellt. - Die
nsIAppStartup
-Schnittstelle hat ein neuesinterrupted
-Attribut, das es Ihnen ermöglicht zu wissen, ob der Startvorgang zu irgendeinem Zeitpunkt durch eine interaktive Aufforderung unterbrochen wurde. Dies kann beispielsweise hilfreich sein, wenn Sie beim Performance-Testen Startzeiten messen, um Zahlen aus Sitzungen fallen zu lassen, die unterbrochen wurden. - Die
nsIEditorSpellCheck
-Schnittstelle wurde überarbeitet, um die Auswahl von Rechtschreibwörterbüchern pro Webseite zu unterstützen.
IDL-Parser
Der IDL-Parser enthält keine Unterstützung mehr für das nie vollständig implementierte Konzept von einzigartigen Zeigern.
Änderungen am Builds-System
- Die
--enable-application=standalone
-Option für den Bau von eigenständigem XPConnect wurde entfernt; sie hat seit 2007 ohnehin nicht mehr funktioniert. - Die Unterstützung für den Bau von Necko und Transformiix XSLT als eigenständig wurde entfernt; Sie können nicht mehr
--enable-application=network
oder--enable-application=content/xslt
verwenden. - Das Builds-System sucht nun nach
.mozconfig
unter$topsrcdir/.mozconfig
oder$topsrcdir/mozconfig
, und sonst nirgends, es sei denn, Sie überschreiben den.mozconfig
-Pfad mithilfe derMOZCONFIG
-Umgebungsvariable. - Das
xpidl
-Dienstprogramm wurde im SDK durchpyxpidl
ersetzt.
Sonstige Änderungen
- Die Rechtschreibprüfung hat keine willkürliche Grenze von 130 Zeichen für die Länge der Wörter mehr, die sie auf Rechtschreibfehler überprüfen wird. Diese Grenze war zuvor vorhanden, um Abstürzen in der Rechtschreibprüfung vorzubeugen, die aufgrund von zugrundeliegenden Fehlern auftraten, die inzwischen behoben wurden.
- Sie können jetzt Komponenten registrieren, um Funktionen zum
window.navigator
-Objekt hinzuzufügen, indem Sie die Kategorie "JavaScript-navigator-property" verwenden.