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 Fortschrittsleiste 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
<iframe>
-Element wird nun korrekt von seinem Container abgeschnitten, wenn die Ecken des Containers mit der Eigenschaftborder-radius
abgerundet wurden. - Textfeld-
<input>
e in<form>
-Elementen unterstützen nicht mehr die XUL-Eigenschaftmaxwidth
; dies war nie beabsichtigt und verstößt gegen die HTML-Spezifikation. Sie sollten stattdessen das Attributsize
verwenden, um die maximale Breite von Eingabefeldern festzulegen. - Die Eigenschaften
fillStyle
undstrokeStyle
des<canvas>
-CanvasRenderingContext2d
ignorierten früher unnötige Angaben nach einer gültigen Farbangabe; jetzt wird dies korrekt als Fehler behandelt. Zum Beispiel wurde "red blue" als Farbe früher als "red" interpretiert, obwohl es ignoriert werden sollte. - Die Breite und Höhe von
<canvas>
-Elementen kann jetzt korrekt auf 0px eingestellt werden; zuvor wurden diese willkürlich auf 300px gesetzt, wenn Sie dies versucht haben. - Unterstützung für die HTML benutzerdefinierten Datenattribute (
data-*
) wurde hinzugefügt. Die DOM-Eigenschaftdataset
ermöglicht den Zugriff darauf. - Wenn ein
<textarea>
-Element den Fokus erhält, befindet sich der Texteinschubspunkt jetzt standardmäßig am Anfang des Textes anstatt am Ende. Dadurch wird das Verhalten von Firefox mit anderen Browsern konsistent.
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 von Textdekorationen wie Unterstreichungen, Überstrichen und Durchstreichungen festzulegen. Stile umfassen einfache Striche, doppelte Striche, wellige Linien, gepunktete Linien und dergleichen.
-moz-hyphens
-
Diese neue Eigenschaft ermöglicht es Ihnen, zu steuern, wie die Trennung von Wörtern beim Zeilenumbruch 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 nun eine neueregexp()
Funktion, die es Ihnen ermöglicht, die URL des Dokuments mit einem regulären Ausdruck abzugleichen. - Die
azimuth
CSS-Eigenschaft wird nicht mehr unterstützt, da wir den geringen Code, den wir für dieaural
Medienspezifikationsgruppe hatten, entfernt haben. Sie war nie signifikant implementiert, daher machte es mehr Sinn, die veraltete Implementierung vorläufig zu entfernen, anstatt sie zu reparieren. - In der Vergangenheit wurde die
:hover
Pseudoklasse nicht auf Klassenselektoren im Quirks-Modus angewendet; zum Beispiel funktionierte.some-class:hover
nicht. Dieses Problem wurde behoben. - Die
:indeterminate
Pseudoklasse 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
-moz-win-exclude-glass
Wert wurde zur-moz-appearance
CSS-Eigenschaft hinzugefügt, um opake Regionen in Aero-Glass-Glasur-Effekten auf Windows-Systemen auszuschließen. - Firefox Bug 658949 änderte die Behandlung des Hash (#) Symbols in Data-URLs, was CSS-Stile beeinflussen kann, die dieses Symbol enthalten, wenn es nicht entwertet ist.
DOM
- Verwenden von Media-Queries aus dem Code
-
Sie können jetzt das Ergebnis einer Media-Query-Zeichenfolge programmgesteuert mit der Methode
window.matchMedia()
und der SchnittstelleMediaQueryList
testen. - Touch-Ereignisse
-
Firefox 6 fügt Unterstützung für W3C-Standard-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-gesendete Ereignisse
-
Server-gesendete Ereignisse ermöglichen es einer Webanwendung, einen Server zu bitten, Ereignisse zu senden, ähnlich wie ein lokal erstelltes DOM-Ereignis.
navigator.securityPolicy
, das lange Zeit einen leeren String zurückgegeben hat, wurde vollständig entfernt.BlobBuilder
ist nun implementiert, obwohl es vorerst mit einem Präfix versehen ist (Sie müssen alsoMozBlobBuilder
verwenden).- Das
Document.height
undDocument.width
wurden entfernt. Firefox Bug 585877 - Die Eigenschaften
entities
undnotations
desDocumentType
-Objekts, die nie implementiert und immernull
zurückgegeben wurden, wurden entfernt, da sie sowieso aus der Spezifikation entfernt wurden. - Die Schnittstelle
DOMConfiguration
und die Eigenschaftdocument.domConfig
, die sie verwendete, wurden beide entfernt; sie wurden nie unterstützt und sind seitdem aus der DOM-Spezifikation entfernt worden. - Das
hashchange
-Ereignis enthält nun korrekt dienewURL
- undoldURL
-Felder. - Die
abort()
-Methode derFileReader
-Schnittstelle wirft jetzt eine Ausnahme, wenn sie verwendet wird, wenn kein Dateilesen im Gange ist. - Die Methode
window.postMessage()
verwendet nun den strukturierten Klon-Algorithmus, um Ihnen das Übergeben von JavaScript-Objekten anstelle von nur Strings von einem Fenster zum anderen zu ermöglichen. - Die API
window.history
verwendet nun den strukturierten Klon-Algorithmus, um die Objekte zu serialisieren, die Sie an die MethodenpushState()
undreplaceState()
übergeben; dies ermöglicht die Verwendung komplexerer Objekte (einschließlich solcher, die zyklische Referenzgraphen enthalten). - Sie können jetzt erkennen, wann ein Druckvorgang initiiert und abgeschlossen wurde, indem Sie auf die neuen
beforeprint
undafterprint
Ereignisse lauschen. - Die Eigenschaft
document.strictErrorChecking
wurde entfernt, da sie nie implementiert wurde und aus der DOM-Spezifikation entfernt wurde. - Die standardisierte
event.defaultPrevented
Eigenschaft wird nun unterstützt; Sie sollten diese anstelle der nicht standardisiertengetPreventDefault()
Methode verwenden, um festzustellen, obevent.preventDefault()
auf das Ereignis angewendet wurde. - Die Eigenschaft
window.top
ist nun ordnungsgemäß schreibgeschützt. - DOM-Views, die wir nie dokumentiert hatten, wurden entfernt. Dies war ein Implementierungsdetail, das unnötigerweise die Dinge verkomplizierte, daher haben wir es entfernt. Wenn Ihnen diese Änderung auffällt, machen Sie wahrscheinlich etwas falsch.
- Der
useCapture
Parameter deraddEventListener()
Funktion fürEventTarget
ist jetzt optional, wie es in WebKit der Fall ist (und gemäß der neuesten Version der Spezifikation). - Die Eigenschaft
mozResponseArrayBuffer
desXMLHttpRequest
-Objekts wurde durch die EigenschaftenresponseType
undresponse
ersetzt. - Die Eigenschaft
dataset
wurde zur SchnittstelleHTMLElement
hinzugefügt, die den Zugriff auf diedata-*
globalen Attribute eines Elements ermöglicht. - Die Schnittstelle
CustomEvent
wurde implementiert. (siehe Firefox Bug 427537) - Aus Sicherheitsgründen erben
data:
- undjavascript:
-URLs nicht mehr den Sicherheitskontext der aktuellen Seite, wenn der Benutzer sie in die Adressleiste eingibt; stattdessen wird ein neuer, leerer Sicherheitskontext erstellt. Dies bedeutet, dass Skripte, die durch die Eingabe vonjavascript:
-URLs in die Adressleiste geladen werden, keinen Zugriff mehr auf DOM-Methoden und dergleichen haben. Diese URLs funktionieren jedoch weiterhin wie gewohnt, wenn sie durch Skripte verwendet werden.
JavaScript
- In der Vergangenheit war es möglich, den
new
Operator auf mehrere integrierte Funktionen anzuwenden (eval()
,parseInt()
,Date.parse()
, …), die dies laut Spezifikation nicht erlauben sollten. Dieses Verhalten wird nicht mehr unterstützt. Die Verwendung desnew
Operands auf diese Weise wurde nie offiziell unterstützt und war nicht weit verbreitet, daher ist es unwahrscheinlich, dass diese Änderung Sie betrifft. - ECMAScript 2015 WeakMaps wurden als Prototyp-Implementierung hinzugefügt.
SVG
- Das Attribut
pathLength
wird nun unterstützt. - SVG-Muster, -Verläufe und -Filter funktionieren nun korrekt, wenn sie aus
data:
URLs geladen werden.
MathML
- Die Implementierung von
<mstyle>
wurde korrigiert.
Barrierefreiheit (ARIA)
- Ein Zustandsänderungsereignis wird nun korrekt gesendet, wenn der Wert von
aria-busy
sich ändert. - Ein Attributänderungsereignis wird nun korrekt gesendet, wenn
aria-sort
auftritt.
Netzwerk
- WebSockets
-
WebSockets wurde in Firefox 6 auf Protokollversion 07 aktualisiert. Zusätzlich wurde das globale
WebSocket
Objekt inMozWebSocket
umbenannt, um eine inkorrekte Verwendung zur Erkennung der Verfügbarkeit von nicht-prefixierten WebSockets zu verhindern.
- Das Parsen des
Content-Disposition
Headers wurde korrigiert, um Backslash-escaped ASCII-Zeichen korrekt als das Zeichen selbst zu interpretieren. Zuvor wurde es fälschlicherweise durch ein Unterstrich ("_") ersetzt. - Der Wert des Pfadfelds in
Set-Cookie
Headers wird nun korrekt interpretiert, wenn Anführungszeichen verwendet werden; zuvor wurden sie als Teil des Pfads betrachtet und nicht als Trennzeichen. Diese Änderung kann die Kompatibilität mit einigen Websites beeinträchtigen, daher sollten Autoren ihren Code überprüfen. - Der
Upgrade
Anfrage-Header wird nun unterstützt; Sie können ein Upgrade eines HTTP-Kanals auf ein anderes Protokoll anfordern, indem SiensIHttpChannelInternal.HTTPUpgrade()
aufrufen.
Andere Änderungen
- Die Unterstützung für Mikrosummaries wurde entfernt; diese wurden nie weit verbreitet genutzt, waren nicht sehr bemerkbar und die fortlaufende Unterstützung erschwerte Verbesserungen der Places-Architektur (Lesezeichen und Verlauf).
- WebGL unterstützt jetzt die
OES_texture_float
Erweiterung. - Das neue Scratchpad Werkzeug bietet einen praktischen Ort, um mit JavaScript-Code zu experimentieren.
- Die Methode
console.trace()
wurde zur Console API (Firefox Bug 585956) hinzugefügt.
Änderungen für Mozilla- und Add-on-Entwickler
Für einen Überblick über die Änderungen, die Sie eventuell 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, wie es bei allen Hauptversionen von Firefox der Fall ist. Details hierzu finden Sie unter Binary Interfaces.
JavaScript-Code-Module
FileUtils.jsm
- Die Methode
openSafeFileOutputStream()
öffnet nun Dateien mit demDEFER_OPEN
Verhaltensflag anstatt zu versuchen, 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 es, Module zu erstellen, die voneinander abhängen.
XPCOM
nsCOMArray<T>
hat nun eine MethodeRemoveObjectsAt()
zum Entfernen mehrerer Objekte aus dem Array auf einmal.
Verwendung des DOM aus Chrome
- Verwendung der DOM File API in Chrome-Code
-
Obwohl Sie die DOM File API schon immer aus Chrome-Code verwenden konnten, unterstützt der
File
-Konstruktor jetzt die Angabe eines lokalen Pfadnamens als String, wenn er aus Chrome verwendet wird. Darüber hinaus können Sie auch die Datei, auf die zugegriffen werden soll, mit der DOM File API unter Verwendung einesnsIFile
-Objekts angeben.
Schnittstellenänderungen
nsINavHistoryQueryOptions
unterstützt nun das Sortieren nach Häufigkeit in aufsteigender Reihenfolge mit den neuen KonstantenSORT_BY_FREQUENCY_ASCENDING
undSORT_BY_FREQUENCY_DESCENDING
.nsIFilePicker
hat ein neues AttributnsIFilePicker.addToRecentDocs
, das es Ihnen ermöglicht, anzugeben, dass die ausgewählte Datei zur "zuletzt verwendeten Dokumenten"-Liste des Benutzers hinzugefügt werden sollte, falls eine solche existiert. Dieses Attribut hat keinen Effekt, wenn Sie im privaten Browsing-Modus sind.nsINavBookmarkObserver
-Methoden mit Item-ID-Parametern erfordern nun auch eine GUID.nsIPrefBranch.clearUserPref()
wirft keine Ausnahme mehr, wenn die angegebene Voreinstellung nicht existiert oder keinen benutzerdefinierten Wert hat. Stattdessen tut es nichts.- Die Schnittstelle
nsIMemoryReporter
bietet jetzt Unterstützung für die Angabe der Art des beschriebenen Speichers (gemappt, Heap oder anderes). - Das Attribut
stateData
vonnsISHEntry
gibt jetzt einnsIStructuredCloneContainer
zurück. nsIURI
hat ein neues AttributnsIURI.ref
, das den Referenzteil (den Teil nach dem "#") der URI zurückgibt. Es hat auch neue MethodennsIURI.cloneIgnoringRef()
, die diensIURI
ohne das ref-Mitglied klonen, undnsIURI.equalsExceptRef()
, die mit einem anderennsIURI
ohne Berücksichtigung des ref-Mitglieds vergleicht.
Neue Schnittstellen
mozIAsyncFavicons
-
Ein neuer Dienst, der Ihnen ermöglicht, asynchron auf den Favicon-Dienst zuzugreifen.
nsIEventSource
-
Details folgen.
nsIGSettingsCollection
-
Details folgen.
nsIGSettingsService
-
Details folgen.
nsIHttpUpgradeListener
-
Die Rückrufschnittstelle zur Behandlung von HTTP-Upgrade-Anfragen über die Methode
nsIHttpChannelInternal.HTTPUpgrade()
. nsIStructuredCloneContainer
-
Ein Container für Objekte, die unter Verwendung des strukturierten Klon-Algorithmus serialisiert wurden.
nsITelemetry
-
Implementiert Telemetrieunterstützung, um die Aufzeichnung von Telemetriedaten zu ermöglichen, die zur Darstellung von Histogrammen zur Leistungsüberwachung verwendet werden können. 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)
Andere Änderungen
- Verwendung von Voreinstellungen aus Anwendungscode
-
Eine neue statische API ist verfügbar, um leicht auf Voreinstellungen zuzugreifen; diese ist nur für Anwendungscode verfügbar und kann nicht von Add-ons verwendet werden.