Firefox 10 für Entwickler
Firefox 10 wurde am 31. Januar 2012 veröffentlicht. Dieser Artikel bietet Informationen über die neuen Funktionen und wesentlichen behobenen Fehler in dieser Version sowie Links zu detaillierterer Dokumentation sowohl für Webentwickler als auch für Add-on-Entwickler.
Hinweis: Firefox 10 ist die erste Veröffentlichung dieses Browsers mit zweistelligen Nummern. Dies kann zu Problemen mit einigen UA-Sniffing-Skripten führen. Stellen Sie sicher, dass Sie diese sowie die in Ihrer Seite eingebetteten Drittanbieter-Software-Bibliotheken überprüfen. Weitere Informationen hierzu finden Sie im Artikel "Firefox goes 2-digit" auf hack.mozilla.org.
Änderungen für Webentwickler
HTML
- Das neue HTML5-Element
<bdi>
, bi-directionale Isolation, das die Isolation von Textteilen mit unterschiedlicher Richtungsabhängigkeit ermöglicht, wurde implementiert. Dies ist besonders nützlich, wenn Text mit unbekannter Richtungsabhängigkeit, beispielsweise aus einer Datenbank, in einem Text mit bekannter, und möglicherweise anderer, Richtungsabhängigkeit angezeigt wird. - Sie können jetzt ein Fragment von "top" für das
href
-Attribut angeben, um einen Link an den Anfang der Seite zu erstellen. Dies funktionierte früher, war eine Zeit lang nicht verfügbar, und ist jetzt zurückgekehrt, um mit der HTML5-Spezifikation kompatibel zu sein. Beispiel:<a href="#top">Zurück zum Seitenanfang</a>
.
JavaScript
- Die Methode
WeakMap.set()
gibt jetztundefined
zurück, anstatt sich selbst. - Ein Fehler in der Verarbeitung regulärer Ausdrücke, der in Firefox 7 eingeführt wurde, wurde behoben. Wenn Sie die detaillierten Informationen wünschen, siehe Firefox-Fehler 683838.
- Sie können die veraltete ECMAScript-for-XML (E4X) Syntax im ECMAScript 5 Strict Mode (d.h. nach
"use strict;"
) nicht mehr verwenden.
DOM
DOM3-Ereignisse
- Die DOM-Ereignismethode
event.stopImmediatePropagation
wurde implementiert. - Die Mausereignisse
mouseenter
undmouseleave
wurden implementiert.
DOM4
- Das Attribut
document.xmlVersion
(das nur lesbar, aber nicht setzbar war) wurde entfernt, da es in der DOM4-Spezifikation als veraltet gilt. Der Artikel fürdocument.xmlVersion
schlägt nun eine Möglichkeit vor, zu erkennen, ob das Dokument HTML oder XML ist, ohne diese Eigenschaft zu verwenden. - Das Attribut
document.xmlStandalone
wurde entfernt, da es in der DOM4-Spezifikation als veraltet gilt. - Das Attribut
document.xmlEncoding
wurde entfernt, da es in der DOM4-Spezifikation als veraltet gilt. - Das Attribut
text.isElementContentWhiteSpace
wurde entfernt, da es in der DOM4-Spezifikation als veraltet gilt. - Die Methode
text.replaceWholeText
wurde entfernt, da es in der DOM4-Spezifikation als veraltet gilt. - Die Methode
node.isSameNode
wurde entfernt, da es in der DOM4-Spezifikation als veraltet gilt. Stattnode1.isSameNode(node2)
können Sie den===
Operator verwenden, so:node1 === node2
.
Page Visibility API
- Die Page Visibility API wurde implementiert (mit Präfix):
document.mozHidden
,document.mozVisibilityState
sind verfügbar und das Ereignismozvisibilitychanged
wird versendet, wenn sich der Zustand ändert.
Full Screen API
- Unterstützung für
document.fullscreenEnabled
wurde hinzugefügt. - Die neue Eigenschaft
:-moz-full-screen-ancestor
wurde hinzugefügt. Diese ermöglicht es, gegen Elemente zu übereinstimmen, die Vorfahren eines Vollbildmoduselements sind.
Battery API
- Experimentelle Unterstützung für
navigator.mozBattery
wurde hinzugefügt (kann aktiviert werden, indem die Voreinstellungdom.battery.enabled
auftrue
gesetzt wird und wird ab Firefox 11 standardmäßig aktiviert sein).
Canvas
- Die Methode
createPattern()
löst jetzt eine Ausnahme aus, wenn eine leeren Quell-Canvas angegeben wird. - Wenn Sie einen nicht-endlichen Wert für einen der numerischen Parameter von
putImageData()
verwenden, wird der Aufruf jetzt stillschweigend ignoriert, anstatt eine Ausnahme zu werfen, wie es der Spezifikation entspricht.
WebGL
- Firefox 10 unterstützt jetzt die
OES_standard_derivatives
Erweiterung. - Neue Einstellungen wurden hinzugefügt, um WebGL-Code auf Kompatibilität mit minimal ausgestatteten Geräten auf Ihrer vollwertigen Entwicklungsplattform zu testen.
Web Workers
- Die Attribute
XMLHttpRequest.responseType
undXMLHttpRequest.response
sind nun von innerhalb der Workers verfügbar. - Der
Worker()
Konstruktor akzeptiert nun data URLs.
IndexedDB
Große Fortschritte wurden gemacht, um IndexedDB an die letzte Entwurfspezifikation anzupassen. Diese Bemühungen werden in Firefox 11 fortgesetzt.
- Die Methoden
IDBIndex.count()
undIDBObjectStore.count()
wurden hinzugefügt. - Die Methode
IDBCursor.advance()
wurde hinzugefügt. - Bei unbekannten optionalen Parametern in
IDBObjectStore.createIndex()
oderIDBDatabase.createObjectStore()
wird Gecko keine Ausnahme mehr auslösen, sondern es ignorieren. - Wenn
IDBTransaction.abort()
aufgerufen wird, haben alle ausstehendenIDBRequest
ihreerrorCode
aufABORT_ERROR
gesetzt. - Die Methoden
IDBObjectStore.delete()
undIDBCursor.delete()
setzen jetzt dasresult
Attribut des zurückgegebenenIDBRequest
aufundefined
. - Die Methode
IDBDatabase.setVersion()
wurde entfernt, da sie aus der neuesten Spezifikation entfernt wurde. Die Version der Datenbank wird über die MethodeIDBFactory.open()
angegeben, die aktualisiert wurde, und deronupgradeneeded
Callback ermöglicht die Aktualisierung des Datenbankschemas. Die Version selbst wurde von einemDOMString
zu einemunsigned long long
geändert. DieIDBVersionChangeRequest
Schnittstelle wurde entfernt und durch die neueIDBOpenDBRequest
Schnittstelle ersetzt. - Wenn eine Datenbank mit
IDBFactory.open()
geöffnet wird und derversion
Parameter nicht angegeben ist und die Datenbank nicht existiert, wird sie mit einer Version von1
erstellt. - Die Methode
IDBFactory.deleteDatabase()
wurde hinzugefügt. - Methoden, die über ein
IDBKeyRange
suchen (wieIDBObjectStore.openCursor
undIDBIndex.getKey
), können entweder einen einzelnen Schlüssel oder Schlüsselbereich akzeptieren.
Weitere
- Wenn der richtige MIME-Typ
image/svg+xml
übergeben wird, erzeugt derDOMParser
nun einSVGDocument
, wenn ihm eine Zeichenkette mit SVG übergeben wird. - Früher, wenn
element.setAttribute()
Ganzzahlen analysierte, meldete es einen Fehler, wenn die Ganzzahl nicht-numerische Zeichen enthielt (zum Beispiel "42foo"). Jetzt wird dies korrekt gemäß der Spezifikation als die Zahl 42 abgeschnitten. - Die ESC-Taste führte nicht mehr fälschlicherweise dazu, dass der
onkeydown
Handler fälschlicherweise aufgerufen wird. - Die
NameList
Schnittstelle wird nicht mehr implementiert; zuvor hatte sie eine Implementierung ohne Möglichkeit, tatsächlich darauf zuzugreifen. - Die Methode
document.createProcessingInstruction()
funktioniert jetzt in HTML-Dokumenten sowie in XML-Dokumenten.ProcessingInstruction
Knoten werden noch immer nur in XML-Dokumenten unterstützt, aber da Knoten zwischen Dokumenten verschoben werden können, ist es hilfreich, sie auch in HTML-Dokumenten erstellen zu können. - Der
XMLHttpRequest
responseType
"moz-json"
eingeführt in Firefox 9 wurde an den neuesten Entwurf der Spezifikation angepasst und ist jetzt ohne Präfix. Siehe Anmerkung im Firefox-Fehler 707142.
CSS
- CSS 3D-Transformationen werden jetzt unterstützt. Dies beinhaltet die Unterstützung der Eigenschaften
transform-style
,perspective
,perspective-origin
undbackface-visibility
sowie von 3D-Transformationsfunktionen in den Eigenschaftentransform
und<transform-function>
. Weitere Details finden Sie unter Verwendung von CSS-Transformationen. - Zwei neue Werte für die CSS-Eigenschaft
unicode-bidi
wurden hinzugefügt:-moz-isolation
und-moz-plaintext
. Der Wert-moz-isolation
isoliert das Element aus der Richtungsperspektive aus seiner Umgebung, sodass es eine andere Richtungsabhängigkeit haben kann. Ein Element mitunicode-bidi:-moz-isolation
verhält sich wie ein<bdi>
-Element. Das-moz-plaintext
gibt dem Browser an, die Unicode-Browserheuristik zur Bestimmung der Richtung zu verwenden und nicht die CSSdirection
Eigenschaft. - Die CSS
linear-gradient()
undrepeating-linear-gradient()
Eigenschaften wurden aktualisiert, um die neueto
-Syntax und das magic corner Algorithmus zu unterstützen. Dies ermöglicht es, eine präzise Farbe auf der Ecke einer gradientengefüllten Box zu geben. - Das Verhalten der
text-overflow
Eigenschaft bei Fällen, in denen die Box auf beiden Seiten überläuft, während die Eigenschafttext-overflow
nur auf einer Seite eingestellt ist, wurde korrigiert. - Das Handling der
position
-Eigenschaft auf Elementen innerhalb positionierter<table>
-Elemente wurde repariert. Diese Änderung wird das Layout von Seiten beeinflussen; wir stehen jedoch nun im Einklang mit der CSS-Spezifikation und anderen Browsern, sodass dies einfach zu beheben sein sollte. - Die Randkollapsierung um
<table>
-Elemente wurde korrigiert, um der CSS-Spezifikation zu entsprechen. Früher wurden die Ränder von Tabellenelementen nicht zusammen mit anderen angrenzenden Elementen kollabiert, was zu einem falschen Layout führte. Diese Änderung wird das Layout von Seiten beeinflussen; wir stehen jedoch nun im Einklang mit der CSS-Spezifikation und anderen Browsern, sodass dies einfach zu beheben sein sollte.
SVG
- Das
<mask>
Element wurde aktualisiert, um sowohl sRGB als auch linearRGB zu unterstützen, und wird nun standardmäßig auf sRGB gesetzt, in Übereinstimmung mit der neuesten Überarbeitung der SVG 1.1 Spezifikation.
Netzwerk
- Der HTTP-Header
Accept-Charset
wird nicht mehr in HTTP-Anfragen gesendet. Bei seiner Abwesenheit sollten die Server mit dem Senden von UTF-8 antworten.
Entwicklerwerkzeuge
- Das
console
-Objekt hat zwei neue Methoden,console.time()
undconsole.timeEnd()
, die verwendet werden können, um Timer auf einer Seite einzustellen. - Der neue Page Inspector wurde hinzugefügt, der eine ausgezeichnete Möglichkeit bietet, das HTML und CSS hinter Ihrem Inhalt zu untersuchen und zu manipulieren.
Änderungen für Mozilla- und Add-on-Entwickler
Für einen Überblick über mögliche Probleme, die bei der Aktualisierung Ihrer Add-ons zur Unterstützung von Firefox 10 auftreten können, siehe Add-ons für Firefox 10 aktualisieren.
Hinweis:
Der alte PRBool
Datentyp wurde abgeschafft! Überall in der Dokumentation, wo darauf verwiesen wird, wird jetzt der Standard-C++ bool
Typ verwendet. Die Dokumentation wird in Zukunft aktualisiert, aber für den Moment sollten Sie dies beachten.
Manifeste
- Unterstützung für
<em:strictCompatibility>
wurde dem Installationsmanifest hinzugefügt. Es erlaubt Add-on-Autoren, sich für die Überprüfung der maximalen Version ihrer Erweiterung einzusetzen. Wenn auftrue
gesetzt, wird das Add-on deaktiviert, wenn die Anwendungsversion größer als<em:maxVersion>
ist. Firefox 10 setzt standardmäßig voraus, dass Add-ons kompatibel sind, unabhängig von ihrer angegebenen maximalen Version. Diese Flagge überschreibt diese Voreinstellung. Sie sollten dies setzen, wenn Ihr Add-on Dinge tut, die wahrscheinlich durch Firefox-Updates beeinträchtigt werden aber nicht, wenn Ihr Add-on eine Binärkomponente hat, da solche Add-ons immer streng überprüft werden (denken Sie daran, dass Binärkomponenten immer für jede große Firefox-Veröffentlichung re-kompiliert werden müssen). - Wenn Sie zum alten Verhalten zurückkehren möchten – also zur strikten Kompatibilitätsprüfung für alle Add-ons, unabhängig vom Wert des
strictCompatibility
-Flags in ihren Manifesten, können Sie die Voreinstellungextensions.strictCompatibility
auftrue
setzen.
XUL
- Für Add-ons mit Bootstrapping, die eine
chrome.manifest
Datei verwenden, wird die Manifestdatei jetzt automatisch registriert. Siehe den Abschnitt Benutzeroberfläche mit einer chrome.manifest hinzufügen für Details.
XPConnect
- Mehrere neue Eigenschaften und Methoden wurden zu
Components.utils
hinzugefügt, die Zugriff auf verschiedene debugging-relevante Informationen gewähren.
Schnittstellenänderungen
- Die Schnittstellen
mozISpellCheckingEngine
undnsIEditorSpellCheck
wurden aktualisiert, um Add-ons zu erlauben, ohne Neustart Wörterbücher zur Rechtschreibprüfung hinzuzufügen. - Das Attribut
nsIBrowserHistory.lastPageVisited
wurde entfernt. - Die Schnittstelle
nsIDocumentViewer
wurde innsIContentViewer
integriert. - Die Schnittstelle
nsIURIFixup
hat ein neues Flag,FIXUP_FLAG_USE_UTF8
, das es Ihnen ermöglicht, anzugeben, dass UTF-8 anstelle des Plattformzeichensatzes bei Konvertierungen verwendet werden soll.
Plug-in-Änderungen
- Die neue Variable
NPNVdocumentOrigin
wurde hinzugefügt; sie gibt den Dokumentenursprung zurück und ist sicherer alswindow.location
.
Build-Systemänderungen
- Die Build-Option
--disable-rdf
, die es tatsächlich unmöglich machte, erfolgreich zu bauen, wurde entfernt. Es wird daran gearbeitet, die RDF-Unterstützung vollständig zu entfernen, aber derzeit benötigt XUL sie immer noch, um zu funktionieren. Siehe Firefox-Fehler 559505 für Fortschritte beim Entfernen der letzten Spuren der RDF-Anforderung. - Die Build-Option
--disable-smil
wurde entfernt.