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 angibt, wird jetzt unterstützt. Dieses Element sollte jetzt im DOM erscheinen, obwohl sein Verhalten noch nicht implementiert ist.
  • Das <iframe>-Element wird jetzt korrekt von seinem Container abgeschnitten, wenn die Ecken des Containers mithilfe der Eigenschaft border-radius abgerundet wurden.
  • Textfelder für <input> in einem <form>-Element unterstützen nicht länger die XUL-Eigenschaft maxwidth; dies war nie beabsichtigt und widerspricht der HTML-Spezifikation. Verwenden Sie stattdessen das Attribut size, um die maximale Breite von Eingabefeldern festzulegen.
  • Die Eigenschaften fillStyle und strokeStyle des <canvas> [CanvasRenderingContext2d] ignorierten bislang fehlerhafte Zeichen nach einer gültigen Farbdefinition; jetzt wird dies korrekt als Fehler behandelt. Zum Beispiel wurde "red blue" früher als "red" interpretiert, obwohl es eigentlich ignoriert werden sollte.
  • Die Breite und Höhe von <canvas>-Elementen kann jetzt korrekt auf 0px gesetzt werden; früher wurden sie willkürlich auf 300px gesetzt.
  • Unterstützung für die HTML benutzerdefinierten Datenattribute (data-*) wurde hinzugefügt. Die DOM-Eigenschaft dataset erlaubt den Zugriff auf diese Attribute.
  • Wenn ein <textarea>-Element den Fokus erhält, wird der Texteingabe-Punkt standardmäßig an den Beginn des Textes gesetzt, anstatt ans Ende. Dies macht das Verhalten von Firefox konsistent mit anderen Browsern.

CSS

-moz-text-decoration-color

Diese neue Eigenschaft ermöglicht es, die Farbe für Textdekorationen wie Unterstreichungen, Überstreichungen und Durchstreichungen festzulegen.

-moz-text-decoration-line

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

-moz-text-decoration-style

Diese neue Eigenschaft ermöglicht es, den Stil der Textdekorationen wie Unterstreichungen, Überstreichungen und Durchstreichungen festzulegen. Stiloptionen umfassen einfache Linien, doppelte Linien, wellige Linien, gepunktete Linien und so weiter.

-moz-hyphens

Diese neue Eigenschaft ermöglicht es, zu steuern, wie die Trennung von Wörtern beim Zeilenumbruch gehandhabt wird.

-moz-orient

Eine neue (derzeit Mozilla-spezifische) Eigenschaft, die die vertikale oder horizontale Ausrichtung bestimmter Elemente (insbesondere <progress>) steuert.

::-moz-progress-bar

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

Weitere Änderungen

  • Die Eigenschaft @-moz-document hat eine neue Funktion regexp(), 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 der Code für die aural-Mediendefinition entfernt wurde. Es war nie vollständig implementiert, und es machte mehr Sinn, die fehlerhafte Implementierung vorübergehend zu entfernen, anstatt sie zu überarbeiten.
  • In der Vergangenheit wurde die Pseudoklasse :hover bei Klassenselektoren im Quirks-Modus nicht angewendet; beispielsweise funktionierte .some-class:hover nicht. Diese Unstimmigkeit wurde entfernt.
  • Die Pseudoklasse :indeterminate kann auf <progress>-Elemente angewendet werden. Dies ist nicht standardisiert, aber es wird gehofft, dass es von anderen Browsern übernommen wird, da es nützlich ist.
  • Der Wert -moz-win-exclude-glass wurde zur CSS-Eigenschaft -moz-appearance hinzugefügt, um undurchsichtige Bereiche in Aero-Glass-Effekten unter Windows-Systemen auszuschließen.
  • Firefox-Bug 658949 hat geändert, wie das Symbol # in Daten-URLs behandelt wird, was möglicherweise CSS-Stylesheets beeinträchtigt, die dieses Symbol enthalten, wenn es nicht escape-geschützt ist.

DOM

Medienabfragen mithilfe von Code verwenden

Sie können jetzt das Ergebnis eines Medienabfrage-Strings programmatisch mit der Methode window.matchMedia() und der Schnittstelle MediaQueryList testen.

Touch-Events

Firefox 6 fügt Unterstützung für standardisierte Touch-Events gemäß W3C hinzu; damit können Sie leicht eine oder mehrere Berührungen auf berührungsempfindlichen Oberflächen wie Touchscreens und Trackpads interpretieren.

Server-gesendete Ereignisse

Server-sent Events ermöglichen es einer Webanwendung, den Server dazu zu bringen, Ereignisse genau wie lokal erstellte DOM-Ereignisse zu senden.

  • navigator.securityPolicy, das lange Zeit einen leeren String zurückgab, wurde vollständig entfernt.
  • BlobBuilder ist jetzt implementiert, obwohl es derzeit noch ein Präfix (MozBlobBuilder) benötigt.
  • Document.height und Document.width wurden entfernt. Firefox-Bug 585877.
  • Die Eigenschaften entities und notations des DocumentType-Objekts wurden entfernt, da sie nie implementiert und immer null zurückgegeben haben. Sie wurden ohnehin aus der Spezifikation entfernt.
  • Die Schnittstelle DOMConfiguration und die zugehörige Eigenschaft document.domConfig wurden beide entfernt, da sie nie unterstützt wurden und aus der DOM-Spezifikation entfernt wurden.
  • Das hashchange-Ereignis enthält jetzt korrekt die Felder newURL und oldURL.
  • Die Methode abort() der Schnittstelle FileReader löst jetzt eine Ausnahme aus, wenn sie verwendet wird, ohne dass eine Datei gelesen wird.
  • Die Methode window.postMessage() verwendet jetzt den strukturierten Klon-Algorithmus, um JavaScript-Objekte anstelle nur von Strings zwischen verschiedenen Fenstern zu übertragen.
  • Auch die API window.history verwendet nun den strukturierten Klon-Algorithmus, um die Objekte zu serialisieren, die an die Methoden pushState() und replaceState() übergeben werden; dadurch können Sie komplexere Objekte nutzen (einschließlich solcher, die zyklische Referenzgraphen enthalten).
  • Sie können jetzt erkennen, wenn ein Druckvorgang gestartet und abgeschlossen wurde, indem Sie die neuen Ereignisse beforeprint und afterprint abonnieren.
  • Die Eigenschaft document.strictErrorChecking wurde entfernt, da sie nie implementiert wurde und aus der DOM-Spezifikation entfernt wurde.
  • Die standardmäßige Eigenschaft event.defaultPrevented wird jetzt unterstützt; verwenden Sie diese anstelle der nicht standardisierten Methode getPreventDefault(), um zu erkennen, ob event.preventDefault() für das Ereignis aufgerufen wurde.
  • Die Eigenschaft window.top ist jetzt korrekt nur-lesbar.
  • DOM-Ansichten, die nie dokumentiert wurden, wurden entfernt. Dies war ein Implementierungsdetail, das unnötigerweise die Komplexität erhöhte, also wurde es entfernt. Wenn Ihnen diese Änderung auffällt, verwenden Sie möglicherweise die DOM-Schnittstelle falsch.
  • Das useCapture-Parameter der Funktion addEventListener() ist jetzt optional, wie in WebKit (und entsprechend der neuesten Version der Spezifikation).
  • Die Eigenschaft mozResponseArrayBuffer des Objekts XMLHttpRequest wurde durch die Eigenschaften responseType und response ersetzt.
  • Die Eigenschaft dataset wurde zur Schnittstelle HTMLElement hinzugefügt und ermöglicht den Zugriff auf die data-* globalen Attribute eines Elements.
  • Die Schnittstelle CustomEvent wurde implementiert (siehe Firefox-Bug 427537).
  • Aus Sicherheitsgründen übernehmen data:- und javascript:-URLs, die der Benutzer in die Adressleiste eingibt, nicht länger den Sicherheitskontext der aktuellen Seite; stattdessen wird ein neuer leerer Sicherheitskontext erstellt. Dies bedeutet, dass von Scripts geladene javascript:-URLs weiterhin wie bisher funktionieren, jedoch keine DOM-Methoden und dergleichen ausführen können, wenn sie direkt in die Adressleiste eingegeben werden.

JavaScript

  • In der Vergangenheit war es möglich, den Operator new mit verschiedenen eingebauten Funktionen wie eval(), parseInt() und Date.parse() zu verwenden, was gegen die Spezifikation verstößt. Dieses Verhalten wird nun nicht mehr unterstützt. Die Nutzung des Operators new in dieser Weise war nie offiziell unterstützt und es ist unwahrscheinlich, dass diese Änderung Auswirkungen auf bestehende Programmierungen hat.
  • ECMAScript 2015 WeakMaps wurden als Prototyp-Implementierung hinzugefügt.

SVG

  • Das Attribut pathLength wird jetzt unterstützt.
  • SVG-Muster, Gradienten 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 auftritt.

Netzwerk

WebSockets

WebSockets wurde auf Protokollversion 07 aktualisiert. Darüber hinaus wurde das globale Objekt WebSocket in MozWebSocket umbenannt, um fälschlichen Gebrauch zu vermeiden.

  • Die Interpretation des Headers Content-Disposition wurde korrigiert, sodass Backslash-escaped ASCII-Zeichen nun wie vorgesehen interpretiert statt durch Unterstriche ersetzt werden.
  • Der path-Wert in Set-Cookie-Headers wird nun korrekt interpretiert, wenn Anführungszeichen enthalten sind. Dies kann die Kompatibilität mit einigen Websites beeinflussen, daher sollten Entwickler ihren Code überprüfen.
  • Der Upgrade-Header wird nun unterstützt; er erlaubt die Anforderung zur Aktualisierung eines HTTP-Kanals auf ein anderes Protokoll durch Aufruf von nsIHttpChannelInternal.HTTPUpgrade().

Sonstige Änderungen

  • Unterstützung für Microsummaries wurde entfernt, da sie wenig genutzt wurden und ihre Unterstützung Weiterentwicklungen der „Places“-Architektur (Lesezeichen und Verlauf) erschwerte.
  • WebGL unterstützt jetzt die Erweiterung OES_texture_float.
  • Das neue Scratchpad-Tool bietet einen bequemen Ort, um JavaScript-Code auszuprobieren.
  • Die Methode console.trace() wurde zur Console API hinzugefügt (Firefox-Bug 585956).

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

Einen Überblick über notwendige Änderungen, um Ihr Add-on mit Firefox 6 kompatibel zu machen, finden Sie unter Add-ons für Firefox 6 aktualisieren.

Hinweis: Firefox 6 erfordert die Neukompilierung von Binärkomponenten, wie dies bei allen Hauptversionen der Fall ist. Weitere Informationen finden Sie unter Binary Interfaces.

JavaScript-Code-Module

FileUtils.jsm

  • Die Methode openSafeFileOutputStream() öffnet Dateien jetzt mit der Verhaltenskonstante DEFER_OPEN, statt sie sofort zu öffnen.

XPCOMUtils.jsm

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

XPCOM

Verwendung des DOM aus Chrome

Verwendung der DOM File API im Chrome-Code

Obwohl Sie die DOM File API schon immer aus dem Chrome-Code nutzen konnten, unterstützt der Konstruktor File jetzt die Angabe eines lokalen Dateipfadestrings bei Verwendung aus Chrome. Zusätzlich können Sie die Datei mit einem nsIFile-Objekt spezifizieren.

Schnittstellenänderungen

  • nsINavHistoryQueryOptions unterstützt jetzt die Sortierung nach Häufigkeit mit den neuen Konstanten SORT_BY_FREQUENCY_ASCENDING und SORT_BY_FREQUENCY_DESCENDING.
  • nsIFilePicker hat ein neues Attribut nsIFilePicker.addToRecentDocs, das angibt, dass die ausgewählte Datei zur "zuletzt verwendeten Dokumente"-Liste des Benutzers hinzugefügt werden soll, falls vorhanden. Dieses Attribut hat keinen Effekt im privaten Modus.
  • Methoden des nsINavBookmarkObserver, die Item-ID-Parameter enthalten, benötigen jetzt ebenfalls eine GUID.
  • nsIPrefBranch.clearUserPref() wirft keine Ausnahme mehr, wenn die angegebene Einstellung nicht existiert oder keinen benutzerspezifischen Wert hat. Stattdessen tut sie nichts.
  • Die Schnittstelle nsIMemoryReporter bietet jetzt Unterstützung zur Kennzeichnung der Art des beschriebenen Speichers (z. B. gemappter Speicher, Heap oder Sonstiges).
  • Das Attribut stateData von nsISHEntry gibt jetzt einen nsIStructuredCloneContainer zurück.
  • nsIURI hat ein neues Attribut nsIURI.ref, das den Referenzteil (den Teil nach dem "#") der URI zurückgibt. Auch neue Methoden wie nsIURI.cloneIgnoringRef() und nsIURI.equalsExceptRef(), um Referenzteile zu ignorieren und zu vergleichen, sind verfügbar.

Neue Schnittstellen

mozIAsyncFavicons

Ein neuer Dienst, der den asynchronen Zugriff auf Favicons ermöglicht.

nsIEventSource

Details folgen.

nsIGSettingsCollection

Details folgen.

nsIGSettingsService

Details folgen.

nsIHttpUpgradeListener

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

nsIStructuredCloneContainer

Ein Container für Objekte, die mit dem strukturierten Klonalgorithmus serialisiert wurden.

nsITelemetry

Implementiert Telemetrie-Unterstützung, um die Aufzeichnung von Telemetriedaten zu ermöglichen, die für die Darstellung von Histograms für Leistungsüberwachung verwendet werden. 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 Einstellungen im Anwendungscode

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

Siehe auch