Firefox 6 für Entwickler

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

Änderungen für Webentwickler

HTML

  • Das HTML5-Element <progress>, mit dem Sie eine Fortschrittsanzeige erstellen können, wird jetzt unterstützt.
  • Das Parsen des HTML5-Elements <track>, das Textspuren für Medienelemente spezifiziert, wird jetzt unterstützt. Dieses Element sollte jetzt im DOM erscheinen, obwohl sein Verhalten noch nicht implementiert ist.
  • Das Element <iframe> wird jetzt korrekt von seinem Container abgeschnitten, wenn die Ecken des Containers mit der Eigenschaft border-radius abgerundet wurden.
  • Textfelder 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 Attribut size verwenden, um die maximale Breite von Eingabefeldern festzulegen.
  • Die Eigenschaften fillStyle und strokeStyle des <canvas> CanvasRenderingContext2d ignorierten früher Abfälle nach einer gültigen Farbdefinition; jetzt wird dies korrekt als Fehler behandelt. Zum Beispiel wurde "red blue" als Farbe früher 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 diese willkürlich auf 300px gesetzt, wenn Sie das versuchten.
  • Unterstützung für die HTML benutzerdefinierten Datenattribute (data-*) wurde hinzugefügt. Die DOM-Eigenschaft dataset ermöglicht es, auf sie zuzugreifen.
  • Wenn ein <textarea>-Element den Fokus erhält, wird der Texteingabepunkt jetzt standardmäßig am Anfang des Textes platziert, anstatt am Ende. Dies macht das Verhalten von Firefox konsistent mit anderen Browsern.

CSS

-moz-text-decoration-color

Diese neue Eigenschaft ermöglicht es Ihnen, die Farbe von Textdekorationen wie Unterstreichungen, Überstrichen und Durchstreichungen festzulegen.

-moz-text-decoration-line

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

-moz-text-decoration-style

Diese neue Eigenschaft ermöglicht es Ihnen, den Stil der Textdekorationen festzulegen, wie Unterstreichungen, Überstriche und Durchstreichungen. Zu den Stilen gehören einfache Striche, Doppellinien, gewellte Linien, gepunktete Linien usw.

-moz-hyphens

Diese neue Eigenschaft ermöglicht es Ihnen, zu kontrollieren, wie die Trennung von Wörtern beim Zeilenumbruch behandelt wird.

-moz-orient

Eine neue (derzeit Mozilla-spezifische) Eigenschaft, mit der Sie die vertikale oder horizontale Ausrichtung bestimmter Elemente (insbesondere <progress>) steuern können.

::-moz-progress-bar

Ein Mozilla-spezifisches Pseudoelement, mit dem Sie den Bereich eines <progress>-Elements gestalten können, der den abgeschlossenen Teil einer Aufgabe darstellt.

Andere Änderungen

  • Die @-moz-document-Eigenschaft hat eine neue regexp()-Funktion, mit der Sie die URL des Dokuments mit einem regulären Ausdruck abgleichen können.
  • Die CSS-Eigenschaft azimuth wird nicht mehr unterstützt, da wir den wenigen Code entfernt haben, den wir für die aural-Mediengruppe hatten. Sie war nie signifikant implementiert, daher machte es mehr Sinn, die veraltete Implementierung vorerst zu entfernen, anstatt zu versuchen, sie zu reparieren.
  • In der Vergangenheit wurde die Pseudoklasse :hover in der Quirks-Modus nicht auf Klassen-Selektoren angewendet; zum Beispiel funktionierte .some-class:hover nicht. Diese Eigenheit wurde entfernt.
  • Die Pseudoklasse :indeterminate kann auf <progress>-Elemente angewendet werden. Dies ist nicht standardisiert, aber wir hoffen, dass es von anderen Browsern übernommen wird, da es nützlich sein wird.
  • Der Wert -moz-win-exclude-glass wurde der CSS-Eigenschaft -moz-appearance hinzugefügt, um undurchsichtige Bereiche in Aero Glass-Effekten unter Windows-Systemen auszuschließen.
  • Firefox Bug 658949 änderte, wie das Hash-Symbol (#) in Daten-URLs behandelt wird, was CSS-Stylesheets, die ein solches Symbol enthalten, beeinträchtigen kann, wenn es nicht entkommen ist.

DOM

Verwendung von Media Queries im Code

Sie können jetzt das Ergebnis einer Media Query-Zeichenkette programmatisch mit der Methode window.matchMedia() und der Schnittstelle MediaQueryList testen.

Touch-Ereignisse

Firefox 6 unterstützt die W3C-Standard-Touch-Ereignisse; diese erleichtern die Interpretation eines oder mehrerer gleichzeitig auf touch-sensitiven Oberflächen ausgeführter Berührungen wie Touchscreens und Trackpads.

Server-gesendete Ereignisse

Server-gesendete Ereignisse ermöglichen es einer Webanwendung, einen Server zu bitten, Ereignisse ähnlich wie bei lokal erstellten DOM-Ereignissen zu senden.

  • navigator.securityPolicy, das seit langem einen leeren String zurückgegeben hat, wurde vollständig entfernt.
  • BlobBuilder ist nun implementiert, obwohl es vorerst mit Präfix (sodass Sie MozBlobBuilder verwenden müssen).
  • Die Document.height und Document.width wurden entfernt. Firefox Bug 585877
  • Die Eigenschaften entities und notations desDocumentType-Objekts, die nie implementiert wurden und immer null zurückgaben, wurden entfernt, da sie ohnehin aus der Spezifikation entfernt wurden.
  • Das DOMConfiguration-Interface und die document.domConfig-Eigenschaft, die es nutzte, wurden beide entfernt; sie wurden nie unterstützt und sind seitdem aus der DOM-Spezifikation gestrichen worden.
  • Das hashchange-Ereignis enthält jetzt korrekt die newURL- und oldURL-Felder.
  • Die abort()-Methode der FileReader-Schnittstelle wirft nun eine Ausnahme, wenn sie verwendet wird, ohne dass ein Dateilesen im Gange ist.
  • Die window.postMessage()-Methode verwendet jetzt den strukturierten Klon-Algorithmus, um JavaScript-Objekte anstatt nur Strings von einem Fenster zu einem anderen zu übertragen.
  • Die window.history-API verwendet jetzt den strukturierten Klon-Algorithmus, um die Objekte zu serialisieren, die Sie an die Methoden pushState() und replaceState() übergeben; dies ermöglicht die Verwendung komplexerer Objekte (einschließlich solcher, die zyklische Referenzgraphen enthalten).
  • Sie können jetzt erkennen, wann ein Druckvorgang begonnen 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 standardisierte Eigenschaft event.defaultPrevented wird jetzt unterstützt; Sie sollten diese anstelle der nicht standardisierten Methode getPreventDefault() verwenden, um zu prüfen, ob event.preventDefault() für das Ereignis aufgerufen wurde.
  • Die Eigenschaft window.top ist jetzt richtig schreibgeschützt.
  • DOM-Ansichten, die wir nie dokumentiert haben, wurden entfernt. Dies war ein Implementierungsdetail, das unnötig Komplikationen hervorrief, also haben wir es entfernt. Wenn Sie diese Änderung bemerken, machen Sie wahrscheinlich etwas falsch.
  • Die useCapture-Parameterfunktion addEventListener() des EventTarget ist jetzt optional, wie es auch in 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 der Schnittstelle HTMLElement hinzugefügt und ermöglicht den Zugriff auf die globalen Datenattribute data-* eines Elements.
  • Die Schnittstelle CustomEvent wurde implementiert. (siehe Firefox Bug 427537)
  • Aus Sicherheitsgründen erben data:- und javascript:-URLs beim Eingeben in der Adressleiste nicht mehr den Sicherheitskontext der aktuellen Seite; stattdessen wird ein neuer, leerer Sicherheitskontext erstellt. Das bedeutet, dass Skripte, die durch das Eingeben von javascript:-URLs in der Adressleiste geladen werden, keinen Zugriff mehr auf DOM-Methoden und dergleichen haben. Diese URLs funktionieren jedoch weiterhin wie zuvor, wenn sie von Skripten verwendet werden.

JavaScript

  • In der Vergangenheit war es möglich, den new-Operator auf mehrere eingebaute Funktionen (eval(), parseInt(), Date.parse(), …) anzuwenden, die dies nicht erlauben sollten, gemäß der Spezifikation. Dieses Verhalten wird nicht mehr unterstützt. Diese Art der Verwendung des new-Operators war nie offiziell unterstützt und wurde nicht weit verbreitet genutzt, daher ist es unwahrscheinlich, dass diese Änderung Sie betrifft.
  • ECMAScript 2015 WeakMaps wurden als Prototype-Implementierung hinzugefügt.

SVG

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

MathML

  • Die Implementierung von <mstyle> wurde korrigiert.

Barrierefreiheit (ARIA)

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

Netzwerk

WebSockets

WebSockets wurde für Firefox 6 auf Protokollversion 07 aktualisiert. Darüber hinaus wurde das globale WebSocket-Objekt in MozWebSocket umbenannt, um zu verhindern, dass es fälschlicherweise zur Erkennung der Verfügbarkeit von unpräfixierten WebSockets verwendet wird.

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

Andere Änderungen

  • Die Unterstützung für Mikrosummaries wurde entfernt; diese wurden nie weit verbreitet genutzt, waren nicht sehr auffindbar und deren Unterstützung erschwerte Verbesserungen der Places-Architektur (Lesezeichen und Verlauf).
  • WebGL unterstützt jetzt die OES_texture_float-Erweiterung.
  • Das neue Scratchpad-Tool 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, genauso wie alle Hauptversionen von Firefox. Siehe Binäre Schnittstellen für Details.

JavaScript-Code-Module

FileUtils.jsm

  • Die Methode openSafeFileOutputStream() öffnet jetzt Dateien mit dem DEFER_OPEN Verhaltensflag, anstatt zu versuchen, sie sofort zu öffnen.

XPCOMUtils.jsm

  • Die neue Methode importRelative() ermöglicht das Laden eines JavaScript-Code-Moduls aus einem Pfad, der relativ zum Pfad eines anderen JavaScript-Code-Moduls ist. Dies erleichtert den Aufbau von Modulen, die voneinander abhängen.

XPCOM

Verwendung des DOM im Chrome

Verwendung der DOM File-API in Chrome-Code

Obwohl Sie die DOM File-API schon immer im Chrome-Code verwenden konnten, unterstützt der File-Konstruktor jetzt die Angabe eines lokalen Pfadnamensstrings, wenn er aus dem Chrome verwendet wird. Außerdem können Sie die Datei, auf die Sie zugreifen möchten, mithilfe der DOM File-API mit einem nsIFile-Objekt angeben.

Schnittstellenänderungen

  • nsINavHistoryQueryOptions unterstützt jetzt das Sortieren in Frequenzreihenfolge mithilfe der neuen SORT_BY_FREQUENCY_ASCENDING- und SORT_BY_FREQUENCY_DESCENDING-Konstanten.
  • nsIFilePicker hat ein neues nsIFilePicker.addToRecentDocs-Attribut, mit dem Sie angeben können, dass die ausgewählte Datei zur "recent documents"-Liste des Benutzers hinzugefügt werden soll, falls vorhanden. Dieses Attribut hat im privaten Modus keine Auswirkungen.
  • nsINavBookmarkObserver-Methoden mit Element-ID-Parametern erfordern jetzt auch eine GUID.
  • nsIPrefBranch.clearUserPref() wirft keine Ausnahme mehr, wenn die angegebene Präferenz nicht existiert oder keinen benutzerdefinierten Wert hat. Stattdessen tut sie einfach nichts.
  • Die nsIMemoryReporter-Schnittstelle bietet jetzt Unterstützung zur Angabe der Art des beschriebenen Speichers (gemappt, Heap oder andere).
  • Das stateData-Attribut von nsISHEntry gibt jetzt einen nsIStructuredCloneContainer zurück.
  • nsIURI hat ein neues nsIURI.ref-Attribut, das den Referenzteil (den Teil nach dem "#") der URI zurückgibt. Es hat auch neue Methoden nsIURI.cloneIgnoringRef(), die das nsIURI ohne das Ref-Mitglied klont, und nsIURI.equalsExceptRef(), die mit einem anderen nsIURI vergleicht und das Ref-Mitglied ignoriert.

Neue Schnittstellen

mozIAsyncFavicons

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

nsIEventSource

Details stehen aus.

nsIGSettingsCollection

Details stehen aus.

nsIGSettingsService

Details stehen aus.

nsIHttpUpgradeListener

Die Callback-Schnittstelle zur Bearbeitung von HTTP-Upgrade-Anfragen über die Methode nsIHttpChannelInternal.HTTPUpgrade().

nsIStructuredCloneContainer

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

nsITelemetry

Implementiert Telemetrieunterstützung, um die Aufzeichnung von Telemetriedaten zu ermöglichen, die verwendet werden, um Histogramme zur Leistungserfassung zu präsentieren. 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:

Andere Änderungen

Verwendung von Einstellungen aus dem Anwendungscode

Eine neue statische API ist verfügbar, um einfach auf Einstellungen zuzugreifen; dies ist nur für Anwendungscode verfügbar und kann nicht von Add-ons verwendet werden.

Siehe auch