Firefox 6 für Entwickler

Firefox 6, basierend auf Gecko 6.0, wurde am 16. August 2011 veröffentlicht. Dieser Artikel enthält Links zu Informationen über die Änderungen, die Entwickler in dieser Version betreffen.

Änderungen für Webentwickler

HTML

  • Das HTML5-Element <progress>, das Ihnen ermöglicht, eine Fortschrittsanzeige zu erstellen, wird nun unterstützt.
  • Das Parsen des HTML5-Elements <track>, das Textspuren für Media-Elemente spezifiziert, wird nun unterstützt. Dieses Element sollte jetzt im DOM erscheinen, obwohl sein Verhalten noch nicht implementiert ist.
  • Das Element <iframe> wird nun korrekt von seinem Container abgeschnitten, wenn die Ecken des Containers mit der Eigenschaft border-radius abgerundet wurden.
  • Texteingabefelder von <form>-Elementen unterstützen nicht mehr die XUL maxwidth-Eigenschaft; dies war nie beabsichtigt und verstößt gegen die HTML-Spezifikation. Stattdessen sollten Sie das size-Attribut verwenden, um die maximale Breite von Eingabefeldern festzulegen.
  • Die Eigenschaften fillStyle und strokeStyle des <canvas> CanvasRenderingContext2d ignorierten früher Datenmüll, der nach einer gültigen Farbangabe eingefügt wurde; jetzt wird dies korrekt als Fehler behandelt. Zum Beispiel wurde "red blue" früher als Farbe als "red" behandelt, obwohl es ignoriert werden sollte.
  • Die Breite und Höhe von <canvas>-Elementen kann nun korrekt auf 0px gesetzt werden; zuvor wurden sie willkürlich auf 300px gesetzt, wenn Sie versuchten, das zu tun.
  • Unterstützung für die HTML-benutzerdefinierten Datenattribute (data-*) wurde hinzugefügt. Die DOM-Eigenschaft dataset erlaubt den Zugriff auf sie.
  • Wenn ein <textarea>-Element den Fokus erhält, wird der Texteingabepunkt nun standardmäßig zu Beginn des Textes platziert, anstatt am Ende. Dies macht das Verhalten von Firefox mit anderen Browsern konsistent.

CSS

-moz-text-decoration-color

Diese neue Eigenschaft ermöglicht es Ihnen, die Farbe zu setzen, die von Textdekorationen wie Unterstreichungen, Überstreichungen und Durchstreichungen verwendet wird.

-moz-text-decoration-line

Diese neue Eigenschaft ermöglicht es Ihnen, die Art der Textdekorationen festzulegen, die zu einem Element hinzugefügt werden.

-moz-text-decoration-style

Diese neue Eigenschaft ermöglicht es Ihnen, den Stil von Textdekorationen festzulegen, wie z.B. Unterstreichungen, Überstreichungen und Durchstreichungen. Stile umfassen Einzelstriche, Doppelstriche, wellenförmige Linien, punktierte Linien usw.

-moz-hyphens

Diese neue Eigenschaft ermöglicht es Ihnen, zu kontrollieren, wie die Silbentrennung von Wörtern bei der Zeilenumbruchbehandlung gehandhabt wird.

-moz-orient

Eine neue (derzeit Mozilla-spezifische) Eigenschaft, die es Ihnen ermöglicht, die vertikale oder horizontale Ausrichtung bestimmter Elemente (insbesondere <progress>) zu steuern.

::-moz-progress-bar

Ein Mozilla-spezifisches Pseudoelement, das es Ihnen ermöglicht, den Bereich eines <progress>-Elements zu gestalten, der den abgeschlossenen Teil einer Aufgabe darstellt.

Andere Änderungen

  • Die @-moz-document-Eigenschaft hat eine neue regexp()-Funktion, die es Ihnen ermöglicht, die URL des Dokuments mit einem regulären Ausdruck abzugleichen.
  • Die CSS-Eigenschaft azimuth wird nicht mehr unterstützt, da wir den wenigen Code entfernt haben, den wir für die aural Media-Gruppe hatten. Sie war nie signifikant implementiert, daher machte es mehr Sinn, die unübersichtliche Implementierung vorerst zu entfernen, anstatt zu versuchen, sie zu verbessern.
  • In der Vergangenheit wurde die :hover-Pseudoklasse in Quirks-Modus nicht auf Klassenselektoren angewendet; zum Beispiel funktionierte .some-class:hover nicht. Diese Besonderheit wurde entfernt.
  • Die :indeterminate-Pseudoklasse kann auf <progress>-Elemente angewendet werden. Dies ist nicht standardmäßig, aber wir hoffen, dass es von anderen Browsern übernommen wird, da es nützlich sein wird.
  • Der -moz-win-exclude-glass-Wert wurde zur CSS-Eigenschaft -moz-appearance hinzugefügt, um undurchsichtige Bereiche in Aero-Glas-Effekten auf Windows-Systemen auszuschließen.
  • Firefox-Bug 658949 hat geändert, wie das Hash (#) Symbol in Daten-URLs behandelt wird, was möglicherweise CSS-Stylesheets beschädigt, die ein solches Symbol enthalten, wenn es nicht entkommen ist.

DOM

Verwenden von Media-Queries aus dem Code

Sie können nun das Ergebnis einer Media-Query-Zeichenfolge programmgesteuert mit der Methode window.matchMedia() und der Schnittstelle MediaQueryList testen.

Touch-Ereignisse

Firefox 6 fügt Unterstützung für die W3C-Standards für Touch-Ereignisse hinzu; diese machen es einfach, eine oder mehrere Berührungen gleichzeitig auf berührungsempfindlichen Oberflächen wie Touchscreens und Trackpads zu interpretieren.

Server-sent events

Server-sent events ermöglichen es einer Webanwendung, einen Server dazu zu bringen, Ereignisse zu senden, genau wie jedes lokal erzeugte DOM-Ereignis.

  • navigator.securityPolicy, das seit langem eine leere Zeichenkette zurückgegeben hat, wurde vollständig entfernt.
  • BlobBuilder ist nun implementiert, obwohl es derzeit mit einem Präfix versehen ist (so dass Sie MozBlobBuilder verwenden müssen).
  • Die Document.height und Document.width wurden entfernt. Firefox-Bug 585877
  • Die Eigenschaften entities und notations des DocumentType-Objekts, die nie implementiert wurden und immer null zurückgaben, wurden entfernt, da sie ohnehin aus der Spezifikation entfernt wurden.
  • Die DOMConfiguration-Schnittstelle und die document.domConfig-Eigenschaft, die sie verwendete, wurden beide entfernt; sie wurden nie unterstützt und wurden seitdem aus der DOM-Spezifikation entfernt.
  • Das hashchange-Ereignis umfasst nun korrekt die Felder newURL und oldURL.
  • Die abort()-Methode der FileReader-Schnittstelle löst nun eine Ausnahme aus, wenn sie verwendet wird, während kein Lesevorgang im Gange ist.
  • Die Methode window.postMessage() verwendet nun den strukturierten Klon-Algorithmus, um JavaScript-Objekte anstelle von nur Zeichenfolgen von einem Fenster zum anderen zu übergeben.
  • Die API window.history verwendet nun den strukturierten Klon-Algorithmus, um die Objekte, die Sie an die Methoden pushState() und replaceState() übergeben, zu serialisieren; dies ermöglicht die Verwendung komplexerer Objekte (einschließlich solcher, die zyklische Graphen von Verweisen enthalten).
  • Sie können nun erkennen, wann ein Druckvorgang initiiert und abgeschlossen wurde, indem Sie auf die neuen Ereignisse beforeprint und afterprint hören.
  • Die Eigenschaft document.strictErrorChecking wurde entfernt, da sie nie implementiert wurde und aus der DOM-Spezifikation entfernt wurde.
  • Die standardmäßige event.defaultPrevented-Eigenschaft wird nun unterstützt; Sie sollten diese anstelle der nicht standardmäßigen Methode getPreventDefault() verwenden, um zu erkennen, ob event.preventDefault() auf das Ereignis angewendet wurde.
  • Die Eigenschaft window.top ist nun korrekt schreibgeschützt.
  • DOM-Ansichten, die wir nie dokumentiert haben, wurden entfernt. Dies war ein bisschen Implementierungsdetail, das die Dinge unnötig komplizierte, also haben wir es entfernt. Wenn Sie diese Änderung bemerken, machen Sie wahrscheinlich etwas falsch.
  • Die Funktion addEventListener() des EventTarget hat nun den Parameter useCapture optional, wie es bei WebKit der Fall ist (und gemäß der neuesten Version der Spezifikation).
  • Die mozResponseArrayBuffer-Eigenschaft des XMLHttpRequest-Objekts wurde durch die Eigenschaften responseType und response ersetzt.
  • Die Eigenschaft dataset wurde zur Schnittstelle HTMLElement hinzugefügt und ermöglicht den Zugriff auf die globalen HTML-Attribute data-* eines Elements.
  • Die Schnittstelle CustomEvent wurde implementiert. (siehe Firefox-Bug 427537)
  • Aus Sicherheitsgründen erben data:- und javascript:-URLs, die vom Benutzer in der Adressleiste eingegeben werden, nicht mehr den Sicherheitskontext der aktuellen Seite; stattdessen wird ein neuer, leerer Sicherheitskontext erstellt. Dies bedeutet, dass Scripts, die durch Eingabe von javascript:-URLs in der Adressleiste geladen werden, beispielsweise keinen Zugriff mehr auf DOM-Methoden haben. Diese URLs funktionieren jedoch wie bisher, wenn sie von einem Script verwendet werden.

JavaScript

  • In der Vergangenheit war es möglich, den new-Operator auf mehrere eingebaute Funktionen (eval(), parseInt(), Date.parse(), …) anzuwenden, die laut Spezifikation dies nicht erlauben sollten. Dieses Verhalten wird nicht mehr unterstützt. Die Verwendung des new-Operators auf diese Weise wurde nie offiziell unterstützt und war nicht weit verbreitet, daher ist es unwahrscheinlich, dass Sie von dieser Änderung betroffen sind.
  • ECMAScript 2015 WeakMaps wurden als Prototyp implementiert.

SVG

  • Das Attribut pathLength wird nun unterstützt.
  • SVG-Muster, -Verläufe und -Filter funktionieren nun korrekt, wenn sie von data:-URLs geladen werden.

MathML

  • Die Implementierung von <mstyle> wurde korrigiert.

Barrierefreiheit (ARIA)

  • Ein Zustandsänderungsereignis wird nun korrekt gesendet, wenn sich der Wert von aria-busy ändert.
  • Ein Attributänderungsereignis wird nun korrekt gesendet, wenn aria-sort auftritt.

Netzwerk

WebSockets

WebSockets wurde für Firefox 6 auf Protokollversion 07 aktualisiert. Außerdem wurde das globale WebSocket-Objekt in MozWebSocket umbenannt, um zu verhindern, dass es fälschlicherweise zur Erkennung der Verfügbarkeit nicht prae-fixed WebSockets verwendet wird.

  • Das Parsen des Content-Disposition-Headers wurde korrigiert, um ordnungsgemäß backslash-escapete ASCII-Zeichen als genau das betreffende Zeichen selbst zu interpretieren. Zuvor wurde das Zeichen fälschlicherweise durch einen Unterstrich ("_") ersetzt.
  • Der Wert des path-Felds in Set-Cookie-Headers wird nun korrekt interpretiert, wenn Anführungszeichen verwendet werden; zuvor wurden sie als Teil der Pfadzeichenfolge statt als Trennzeichen behandelt. Diese Änderung kann die Kompatibilität mit einigen Websites beeinträchtigen, daher sollten Autoren ihren Code überprüfen.
  • Der Upgrade-Anforderungsheader wird jetzt unterstützt; Sie können ein Upgrade eines HTTP-Kanals auf ein anderes Protokoll anfordern, indem Sie nsIHttpChannelInternal.HTTPUpgrade() aufrufen.

Weitere Änderungen

  • Die Unterstützung für Mikrozusammenfassungen wurde entfernt; diese waren nie weit verbreitet, nicht sehr auffindbar, und ihre weitere Unterstützung erschwerte Verbesserungen an der Places (Lesezeichen- und Verlaufsverwaltung) Architektur.
  • WebGL unterstützt jetzt die OES_texture_float-Erweiterung.
  • Das neue Werkzeug Scratchpad bietet einen praktischen Ort, um mit JavaScript-Code zu experimentieren.
  • Die Methode console.trace() wurde zur Console API hinzugefügt (Firefox-Bug 585956).

Änderungen für Mozilla- und Add-on-Entwickler

Für einen Überblick über die Änderungen, die Sie möglicherweise vornehmen müssen, um Ihr Add-on mit Firefox 6 kompatibel zu machen, siehe Aktualisieren von Add-ons für Firefox 6.

Hinweis: Firefox 6 erfordert, dass binäre Komponenten neu kompiliert werden, ebenso wie alle Hauptversionen von Firefox. Siehe Binary Interfaces für Details.

JavaScript-Code-Module

FileUtils.jsm

  • Die Methode openSafeFileOutputStream() öffnet nun Dateien mit dem DEFER_OPEN Verhaltensflag anstelle des sofortigen Öffnens.

XPCOMUtils.jsm

  • Die neue Methode importRelative() ermöglicht es Ihnen, ein JavaScript-Code-Modul von einem Pfad relativ zum Pfad eines anderen JavaScript-Code-Moduls zu laden. Dies erleichtert den Aufbau von Modulen, die voneinander abhängen.

XPCOM

Verwendung des DOM aus Chrom

Verwenden der DOM-File-API im Chrom-Code

Obwohl Sie die DOM-File-API schon immer aus Chrom-Code verwenden konnten, unterstützt der File-Konstruktor jetzt das Angeben einer lokalen Pfadzeichenfolge, wenn er aus Chrom verwendet wird. Zusätzlich können Sie auch die Datei, auf die mit der DOM-File-API zugegriffen werden soll, mit einem nsIFile-Objekt angeben.

Schnittstellenänderungen

  • nsINavHistoryQueryOptions unterstützt nun das Sortieren in Frequenzreihenfolge mit den neuen Konstanten SORT_BY_FREQUENCY_ASCENDING und SORT_BY_FREQUENCY_DESCENDING.
  • nsIFilePicker hat ein neues Attribut nsIFilePicker.addToRecentDocs, mit dem Sie angeben können, dass die ausgewählte Datei zur "zuletzt verwendeten Dokumentenliste" des Benutzers hinzugefügt werden soll, falls eine vorhanden ist. Dieses Attribut hat keinen Effekt im privaten Browsing-Modus.
  • nsINavBookmarkObserver-Methoden mit Item-ID-Parametern erfordern nun auch eine GUID.
  • nsIPrefBranch.clearUserPref() löst keine Ausnahme mehr aus, wenn die angegebene Präferenz nicht existiert oder keinen benutzerspezifischen Wert hat. Stattdessen tut es nichts.
  • Die nsIMemoryReporter-Schnittstelle bietet nun Unterstützung, um den Typ des beschriebenen Speichers anzugeben (gemappt, Heap oder anderer).
  • Das Attribut stateData von nsISHEntry gibt nun einen nsIStructuredCloneContainer zurück.
  • nsIURI hat ein neues Attribut nsIURI.ref, das den Referenzteil (den Teil nach dem "#") der URI zurückgibt. Es hat auch neue Methoden nsIURI.cloneIgnoringRef(), das die nsIURI ohne den ref-Member klont und nsIURI.equalsExceptRef(), welches mit einer anderen nsIURI vergleicht unter Ausnahme des ref-Members.

Neue Schnittstellen

mozIAsyncFavicons

Ein neuer Dienst, der es Ihnen ermöglicht, asynchron auf den Favicon-Dienst zuzugreifen.

nsIEventSource

Details folgen noch.

nsIGSettingsCollection

Details folgen noch.

nsIGSettingsService

Details folgen noch.

nsIHttpUpgradeListener

Die Rückruf-Schnittstelle zur Handhabung von HTTP-Upgrade-Anforderungen über die Methode nsIHttpChannelInternal.HTTPUpgrade().

nsIStructuredCloneContainer

Ein Container für Objekte, die mit dem strukturierten Klon-Algorithmus serialisiert wurden.

nsITelemetry

Implementiert Unterstützung für Telemetrie, um die Aufzeichnung von Telemetriedaten zu ermöglichen, die zur Darstellung von Histogrammen für Leistungsüberwachungszwecke verwendet werden sollen. Siehe Firefox-Bug 649502 und Firefox-Bug 585196.

nsITimedChannel

Siehe Firefox-Bug 576006.

nsIWebSocketListener

Siehe Firefox-Bug 640003.

nsIWebSocketProtocol

Siehe Firefox-Bug 640003.

Entfernte Schnittstellen

Die folgenden Schnittstellen waren Implementierungsdetails, die nicht mehr benötigt werden:

Weitere Änderungen

Verwendung von Präferenzen aus dem Anwendungscode

Eine neue statische API ist verfügbar, um Präferenzen einfach abzurufen; dies ist nur für Anwendungscode verfügbar und kann nicht von Add-ons verwendet werden.

Siehe auch