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

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 und column-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 ein load Ereignis ausgelöst. Auch bei einem Fehler beim Verarbeiten eines Stylesheets wird ein error 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 übergeordnete Element eines DOM-Knotens zurück oder null, wenn das übergeordnete Element kein Element ist.
  • DOM Level 3 Composition-Ereignisse werden jetzt unterstützt.
  • Das Document.scripts Attribut wurde implementiert; es gibt eine HTMLCollection 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 dem Document 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 zu XMLHttpRequest hinzugefügt, wodurch XMLHttpRequest automatisch JSON Zeichenfolgen für Sie parsen kann; wenn Sie diesen Typ anfordern, wird eine zurückgegebene JSON-Zeichenfolge geparst, sodass der Wert der response 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 einem null 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 und Selection Objekte verhalten sich jetzt gemäß ihren Spezifikationen, wenn splitText() und normalize() aufgerufen werden.
  • Der Wert von Node.ownerDocument für Doctype-Knoten ist jetzt das Dokument, auf dem createDocumentType() aufgerufen wurde, um den Knoten zu erstellen, anstatt null.
  • 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 und drawingBufferHeight werden jetzt unterstützt.

MathML

  • Der nicht standardisierte restyle Wert für das actiontype 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 oder 307 Temporary Redirect auf eine javascript: 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 die Content-Disposition "attachment" wäre; dies funktionierte nicht immer wie erwartet. Diese werden jetzt so behandelt, als ob die Content-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

Ä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 ein pending Attribut, dessen Wert true 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 ein unread Attribut, dessen Wert true 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 einen File Konstruktor, der ein nsIFile 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 Eigenschaften timeStamp und innerWindowID; außerdem nimmt die initWithWindowID() 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() und nsIBrowserHistory.unregisterOpenPage() wurden im Rahmen einer Leistungsüberholung im Places-System entfernt. Sie können stattdessen die entsprechenden Methoden in mozIPlacesAutoComplete verwenden.
  • Die nsIDOMWindowUtils.wrapDOMFile() Methode wurde hinzugefügt; diese gibt ein DOM File Objekt für eine gegebene nsIFile 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 mit nsIChromeFrameMessageManager.loadFrameScript() mit gesetztem verzögerten Lade-Flag geladen haben. Dies wird für Add-ons als browser.messageManager.removeDelayedFrameScript() bereitgestellt.
  • Die nsIAppStartup Schnittstelle hat ein neues interrupted 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 Umgebungsvariable MOZCONFIG.
  • Das xpidl Dienstprogramm wurde im SDK durch pyxpidl 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.

Siehe auch