Firefox 9 Versionshinweise 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, wurden am 21. Dezember 2011 veröffentlicht.
Änderungen für Webentwickler
>HTML
- Das
value-Attribut von<li>kann jetzt negativ sein. Bisher wurden negative Werte in 0 umgewandelt. - Sie können jetzt die Start- und Stop-Zeit von Medien in der URI der Medien festlegen, wenn Sie
<audio>und<video>-Elemente verwenden. <input>- und<textarea>-Elemente berücksichtigen jetzt den Wert deslang-Attributs, wenn sie den Rechtschreibprüfer aufrufen.- Firefox auf Android ermöglicht es Nutzern 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, verfälscht die Leinwand nicht mehr fälschlicherweise wenn CORS gewährt wird. - Der Wert des
rowspan-Attributs kann jetzt bis zu 65.534 betragen, anstelle von 8.190.
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-widthundcolumn-count. - Wenn ein Stylesheet, das mithilfe des
<link>-Elements eingefügt wurde, vollständig geladen und analysiert wurde (aber noch nicht auf das Dokument angewendet wurde), wird jetzt einloadevent ausgelöst. Tritt ein Fehler beim Verarbeiten eines Stylesheets auf, wird einerror-Ereignis ausgelöst. - Sie können jetzt Überlaufseinstellungen für die linken und rechten Kanten von Inhalten mit einer neuen Zwei-Werte-Syntax für
text-overflowangeben.
JavaScript
Keine Änderung.
DOM
- Vollbildmodus verwenden
-
Die neue Vollbild-API bietet die Möglichkeit, Inhalte im Vollbildmodus ohne Browseroberfläche zu präsentieren. Dies ist ideal für Videos und Spiele. Diese API ist derzeit experimentell und mit einem Präfix versehen.
- Die Methode
Node.contains()ist jetzt implementiert; Sie können damit feststellen, ob ein bestimmter Knoten ein Nachkomme eines anderen Knotens ist. - Das Attribut
Node.parentElementwurde implementiert; dies gibt das übergeordneteElementeines DOM-Knotens zurück odernull, wenn das übergeordnete Element kein Element ist. - DOM Level 3 Kompensationsereignisse werden jetzt unterstützt.
- Das Attribut
Document.scriptswurde implementiert; es gibt eineHTMLCollectionaller<script>-Elemente im Dokument zurück. - Die Methode
Document.queryCommandSupported()wurde implementiert. - Die Menge an Ereignissen, die für
<body>-Elemente überwacht werden können, wurde überarbeitet, um dem neuesten Entwurf der HTML5-Spezifikation zu entsprechen. Die Liste der Ereignisse im DOM-Ereignisleitfaden spiegelt wider, welche Ereignisse für<body>-Elemente überwacht werden können. - Das Ereignis
readystatechangewird jetzt nur noch auf demDocumentausgelöst, wie beabsichtigt. - Ereignis-Handler werden jetzt als standardmäßige IDL-Schnittstellen implementiert. In den meisten Fällen wirkt sich dies nicht auf den Inhalt aus, aber es gibt Ausnahmen.
- Ein neuer Antworttyp,
"moz-json", wurde zuXMLHttpRequesthinzugefügt, derXMLHttpRequestdie automatische Analyse von JSON-Strings ermöglicht; wenn Sie diesen Typ anfordern, wird ein zurückgegebener JSON-String analysiert, sodass der Wert derresponse-Eigenschaft das resultierende JavaScript-Objekt ist. XMLHttpRequest"progress"-Ereignisse werden nun zuverlässig für jeden empfangenen Datenblock gesendet; in der Vergangenheit war es möglich, dass der letzte empfangene Datenblock kein "progress"-Ereignis auslöste. Jetzt können Sie den Fortschritt verfolgen, indem Sie nur noch "progress"-Ereignisse beobachten, anstatt auch "load"-Ereignisse überwachen zu müssen, um den Empfang des letzten Datenblocks zu erkennen.- Früher löste das Aufrufen von
addEventListener()mit einemnull-Listener eine Ausnahme aus. Jetzt wird es ohne Fehler und ohne Wirkung zurückgegeben. - Die neue Eigenschaft
navigator.doNotTrackermöglicht es Ihrem Inhalt, leicht festzustellen, ob der Benutzer seine Nicht-Verfolgen-Präferenz aktiviert hat; wenn dieser Wert "yes" lautet, sollten Sie den Benutzer nicht verfolgen. RangeundSelection-Objekte verhalten sich jetzt gemäß ihren Spezifikationen, wennsplitText()undnormalize()aufgerufen werden.- Der Wert von
Node.ownerDocumentfür Doctype-Knoten ist jetzt das Dokument, für dascreateDocumentType()aufgerufen wurde, um den Knoten zu erstellen, anstattnull. window.navigator.taintEnabledwurde entfernt; es wird seit vielen Jahren nicht mehr unterstützt.
Workers
- In Firefox 8 waren Workers, die in Blob-URLs implementiert waren, fehlerhaft, und funktionieren ab Firefox 9 wieder.
WebGL
- Die WebGL-Kontextattribute
drawingBufferWidthunddrawingBufferHeightwerden jetzt unterstützt.
MathML
- Der nicht standardmäßige
restyle-Wert für dasactiontype-Attribut bei<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 bei der tatsächlichen Unterstützung dieses Elements.
Netzwerk
- Sie können jetzt den Inhalt von JavaScript-typisierte 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 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ückgefallen ist, war es sinnvoll, die anfängliche Anfrage zu vereinfachen. - Versuche eines Servers, den Benutzer mit den Antwortcodes
301 Moved Permanentlyoder307 Temporary Redirectauf einejavascript:-URI umzuleiten, führen jetzt zu einem "bad connection"-Fehler, anstatt tatsächlich weiterzuleiten. Dies verhindert bestimmte Arten von Cross-Site-Scripting-Angriffen. - Inhalt, der mit einem leeren
Content-Dispositionbereitgestellt wurde, wurde bisher so behandelt, als wäre dasContent-Disposition"attachment"; dies funktionierte nicht immer wie erwartet. Diese werden jetzt so behandelt, als wäre dasContent-Disposition"inline". - Die standardmäßige maximale Größe eines Elements im Festplattencache wurde auf 50 MB erhöht; zuvor wurden nur bis zu 5 MB große Elemente zwischengespeichert.
Entwicklertools
- Die Webkonsole unterstützt jetzt grundlegende String-Ersetzungen in ihren Protokollierungsmethoden.
- Sie können jetzt visuell verschachtelte Blöcke von Ausgaben erzeugen in der Webkonsole, um die Lesbarkeit zu erhöhen.
Ä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 zum Laufen zu bringen.
XUL
- Das
<xul:tab>-Element besitzt jetzt einpending-Attribut, dessen Werttrueist, wenn der Tab gerade vom Sitzungsmanager wiederhergestellt wird. Dies kann zum Stylen des Tabs in Themes verwendet werden. Das Attribut ist bei Tabs, die nicht ausstehen, nicht vorhanden. - Das
<xul:tab>-Element hat jetzt einunread-Attribut, dessen Werttrueist, 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 Ziehbild für DOM-Drag-and-Drop-Operationen verwenden. Dies ermöglicht die Nutzung der Standard-Drag-&-Drop-API für das Ziehen und Ablegen von XUL-Inhalten. - Die
appendNotification-Methode des<xul:notificationbox>-Elements ermöglicht es jetzt, einen Rückruf anzugeben, der für interessante Ereignisse im Zusammenhang mit der Benachrichtigungsbox 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.jsmhat jetzt einenFile-Konstruktor, der einnsIFile-Objekt zurückgibt, das eine Datei darstellt, die durch ihren Pfad angegeben wird.
Dienständerungen
- Der Inhaltspräferenzdienst verarbeitet jetzt das private Browsing (siehe Firefox Bug 679784).
NSPR
- NSPR hat jetzt ein "Anhänge"-Modul, das es Ihnen ermöglicht, neue Daten an das Ende eines vorhandenen Protokolls anzuhängen.
Schnittstellenänderungen
Entfernte Schnittstellen
nsIGlobalHistory3wurde während der Rationalisierung 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 Systemklangs, wenn mehr als die maximal erlaubte Anzahl von Zeichen in ein Textfeld eingegeben wird. Derzeit wird dies nur unter Windows verwendet. - Die
nsIScriptError2-Schnittstelle hat neuetimeStamp- undinnerWindowID-Eigenschaften; außerdem nimmt die MethodeinitWithWindowID()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 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 sehen können, ob sich die aktuelle Auswahl in einem bearbeitbaren Abschnitt befindet. - Die Methoden
nsIBrowserHistory.registerOpenPage()undnsIBrowserHistory.unregisterOpenPage()wurden im Zuge einer Leistungsüberholung im Places-System entfernt. Sie können stattdessen die entsprechenden Methoden inmozIPlacesAutoCompleteverwenden. - Die Methode
nsIDOMWindowUtils.wrapDOMFile()wurde hinzugefügt; diese gibt ein DOM-File-Objekt für eine bestimmtensIFilezurück. - Die Methode
nsIChromeFrameMessageManager.removeDelayedFrameScript()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 zu entfernen, die sie mit dem verzögerten Ladeflag gesetzt unter Verwendung vonnsIChromeFrameMessageManager.loadFrameScript()geladen haben. Dies wird Add-ons alsbrowser.messageManager.removeDelayedFrameScript()zur Verfügung gestellt. - Die
nsIAppStartup-Schnittstelle hat ein neuesinterrupted-Attribut, das angibt, ob der Startprozess zu irgendeinem Zeitpunkt durch eine interaktive Eingabeaufforderung unterbrochen wurde. Dies kann nützlich sein, um beispielsweise beim Timing der Starts während der Leistungsevaluierung Sitzungen auszuschließen, die unterbrochen wurden. - Die
nsIEditorSpellCheck-Schnittstelle wurde überarbeitet, um die Auswahl der Rechtschreibprüfer-Wörterbücher pro Site zu unterstützen.
IDL-Parser
Der IDL-Parser unterstützt nicht mehr das nie vollständig implementierte Konzept von einzigartigen Pointern.
Änderungen im Build-System
- Die
--enable-application=standalone-Option für den Standalone-Build von XPConnect wurde entfernt; sie funktioniert ohnehin seit 2007 nicht mehr. - Die Unterstützung für den Standalone-Build von Necko und Transformiix XSLT wurde entfernt; Sie können
--enable-application=networkoder--enable-application=content/xsltnicht mehr verwenden. - Das Build-System sucht jetzt nach
.mozconfigunter$topsrcdir/.mozconfigoder$topsrcdir/mozconfigund nirgendwo anders, es sei denn, Sie überschreiben den.mozconfig-Pfad mit derMOZCONFIG-Umgebungsvariable. - Das
xpidl-Dienstprogramm wurde im SDK durchpyxpidlersetzt.
Sonstige Änderungen
- Der Rechtschreibprüfer hat jetzt kein willkürliches 130-Zeichen-Wortlängenlimit mehr für die Länge von Wörtern, die er zu prüfen versucht. Dieses Limit war zuvor vorhanden, um Abstürze im Rechtschreibprüfer zu verhindern, aber die zugrunde liegenden Fehler wurden mittlerweile behoben.
- Sie können jetzt Komponenten registrieren, um dem
window.navigator-Objekt Eigenschaften hinzuzufügen, indem Sie die Kategorie "JavaScript-navigator-property" verwenden.