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 Eigenschaftborder-radius
abgerundet wurden. - Textfelder für
<input>
in einem<form>
-Element unterstützen nicht länger die XUL-Eigenschaftmaxwidth
; dies war nie beabsichtigt und widerspricht der HTML-Spezifikation. Verwenden Sie stattdessen das Attributsize
, um die maximale Breite von Eingabefeldern festzulegen. - Die Eigenschaften
fillStyle
undstrokeStyle
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-Eigenschaftdataset
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 Funktionregexp()
, 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 dieaural
-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 SchnittstelleMediaQueryList
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
undDocument.width
wurden entfernt. Firefox-Bug 585877.- Die Eigenschaften
entities
undnotations
desDocumentType
-Objekts wurden entfernt, da sie nie implementiert und immernull
zurückgegeben haben. Sie wurden ohnehin aus der Spezifikation entfernt. - Die Schnittstelle
DOMConfiguration
und die zugehörige Eigenschaftdocument.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 FeldernewURL
undoldURL
. - Die Methode
abort()
der SchnittstelleFileReader
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 MethodenpushState()
undreplaceState()
ü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
undafterprint
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 MethodegetPreventDefault()
, um zu erkennen, obevent.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 FunktionaddEventListener()
ist jetzt optional, wie in WebKit (und entsprechend der neuesten Version der Spezifikation). - Die Eigenschaft
mozResponseArrayBuffer
des ObjektsXMLHttpRequest
wurde durch die EigenschaftenresponseType
undresponse
ersetzt. - Die Eigenschaft
dataset
wurde zur SchnittstelleHTMLElement
hinzugefügt und ermöglicht den Zugriff auf diedata-*
globalen Attribute eines Elements. - Die Schnittstelle
CustomEvent
wurde implementiert (siehe Firefox-Bug 427537). - Aus Sicherheitsgründen übernehmen
data:
- undjavascript:
-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 geladenejavascript:
-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 wieeval()
,parseInt()
undDate.parse()
zu verwenden, was gegen die Spezifikation verstößt. Dieses Verhalten wird nun nicht mehr unterstützt. Die Nutzung des Operatorsnew
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
inMozWebSocket
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 inSet-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 vonnsIHttpChannelInternal.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 VerhaltenskonstanteDEFER_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
nsCOMArray<T>
hat nun eine MethodeRemoveObjectsAt()
, um mehrere Objekte auf einmal aus dem Array zu entfernen.
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 einemnsIFile
-Objekt spezifizieren.
Schnittstellenänderungen
nsINavHistoryQueryOptions
unterstützt jetzt die Sortierung nach Häufigkeit mit den neuen KonstantenSORT_BY_FREQUENCY_ASCENDING
undSORT_BY_FREQUENCY_DESCENDING
.nsIFilePicker
hat ein neues AttributnsIFilePicker.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
vonnsISHEntry
gibt jetzt einennsIStructuredCloneContainer
zurück. nsIURI
hat ein neues AttributnsIURI.ref
, das den Referenzteil (den Teil nach dem "#") der URI zurückgibt. Auch neue Methoden wiensIURI.cloneIgnoringRef()
undnsIURI.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:
nsIDOMDocumentEvent
(siehe Firefox-Bug 655517)nsIDOMDocumentTraversal
(siehe Firefox-Bug 655514)nsIDOMDocumentRange
(siehe Firefox-Bug 655513)IWeaveCrypto
(siehe Firefox-Bug 651596)nsIDOM3DocumentEvent
(siehe Firefox-Bug 481863)nsIDOMAbstractView
nsILiveTitleNotificationSubject
nsIPlugin
(siehe Firefox-Bug 637253)nsIPluginInstance
(siehe Firefox-Bug 637253)nsIHTMLEditRules
(siehe Firefox-Bug 633750)nsIXSLTProcessorObsolete
(siehe Firefox-Bug 649534)
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.