Firefox 10 für Entwickler
Firefox 10 wurde am 31. Januar 2012 veröffentlicht. Dieser Artikel bietet Informationen zu den neuen Funktionen und den wichtigen behobenen Fehlern in dieser Version sowie Links zu ausführlicher Dokumentation für Webentwickler und Add-On-Entwickler.
Hinweis: Firefox 10 ist die erste Version dieses Browsers mit zweistelligen Versionsnummern. Dies kann bei einigen UA-Sniffing-Skripten Probleme verursachen. Überprüfen Sie diese Skripte sowie jene, die in Drittanbieter-Software eingebettet sind, wie z. B. Bibliotheken. Weitere Informationen finden Sie im Artikel Firefox goes 2-digit article on hack.mozilla.org.
Änderungen für Webentwickler
HTML
- Das neue HTML5-Element
<bdi>
, bidirektionale Isolation, das die Isolation von Textteilen mit unterschiedlicher Richtung ermöglicht, wurde implementiert. Dies ist insbesondere nützlich, wenn Text mit unbekannter Richtung angezeigt wird, z. B. aus einer Datenbank, mitten in Text mit bekannter, möglicherweise unterschiedlicher Richtung. - Sie können jetzt ein Fragment
top
für dashref
-Attribut angeben, um einen Link an den Anfang der Seite zu erstellen. Dies funktionierte früher, verschwand dann eine Weile und ist jetzt wieder zurück, um die Kompatibilität mit der HTML5-Spezifikation zu gewährleisten. Zum Beispiel:<a href="#top">Zurück zum Anfang der Seite</a>
.
JavaScript
- Die Methode
WeakMap.set()
gibt jetztundefined
zurück, statt sich selbst. - Ein Fehler in der Behandlung von regulären Ausdrücken, der in Firefox 7 eingeführt wurde, wurde behoben. Details finden Sie unter Firefox bug 683838.
- Es ist nicht länger möglich, die veraltete ECMAScript for XML (E4X)-Syntax im ECMAScript 5 strict mode zu verwenden (also nach
"use strict;"
).
DOM
DOM3 Events
- Die DOM-Event-Methode
event.stopImmediatePropagation
wurde implementiert. - Die Maus-Ereignisse
mouseenter
undmouseleave
wurden implementiert.
DOM4
- Das Attribut
document.xmlVersion
(das nur lesbar und nicht setzbar war) wurde entfernt, da es in der DOM4-Spezifikation als veraltet markiert wurde. Der Artikel zudocument.xmlVersion
schlägt nun eine Methode vor, um festzustellen, 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 markiert wurde. - Das Attribut
document.xmlEncoding
wurde entfernt, da es in der DOM4-Spezifikation als veraltet markiert wurde. - Das Attribut
text.isElementContentWhiteSpace
wurde entfernt, da es in der DOM4-Spezifikation als veraltet markiert wurde. - Die Methode
text.replaceWholeText
wurde entfernt, da sie in der DOM4-Spezifikation als veraltet markiert wurde. - Die Methode
node.isSameNode
wurde entfernt, da sie in der DOM4-Spezifikation als veraltet markiert wurde. Stattnode1.isSameNode(node2)
können Sie den===
-Operator verwenden, z. B.:node1 === node2
.
Page Visibility API
- Die Page Visibility API wurde mit Präfixen implementiert:
document.mozHidden
,document.mozVisibilityState
sind verfügbar und das Ereignismozvisibilitychanged
wird gesendet, wenn der Status geändert wird.
Full Screen API
- Unterstützung für
document.fullscreenEnabled
wurde hinzugefügt. - Die neue Eigenschaft
:-moz-full-screen-ancestor
wurde hinzugefügt. Damit können Sie gegen Elemente prüfen, die Vorfahren eines Elements im Vollbildmodus sind.
Battery API
- Experimentelle Unterstützung für
navigator.mozBattery
wurde hinzugefügt (kann durch Setzen der Einstellungdom.battery.enabled
auftrue
aktiviert werden und wird standardmäßig ab Firefox 11 aktiviert).
Canvas
- Die Methode
createPattern()
löst jetzt eine Ausnahme aus, wenn ein Canvas mit der Größe Null angegeben wird. - Wenn Sie einen Wert verwenden, der nicht endlich ist, für einen der numerischen Parameter von
putImageData()
, wird der Aufruf jetzt still ignoriert, anstatt eine Ausnahme auszulösen, in Übereinstimmung mit der Spezifikation.
WebGL
- Firefox 10 unterstützt jetzt die Extension
OES_standard_derivatives
. - Neue Voreinstellungen wurden hinzugefügt, um WebGL-Code auf Kompatibilität mit minimal ausgestatteten Geräten auf Ihrer vollen Entwicklungsplattform zu testen.
Web Workers
- Das Attribut
XMLHttpRequest.responseType
undXMLHttpRequest.response
sind jetzt innerhalb von Workers verfügbar. - Der Konstruktor
Worker()
akzeptiert jetzt data URLs.
IndexedDB
Große Fortschritte wurden gemacht, um IndexedDB auf den neuesten Entwurf der Spezifikation zu aktualisieren. Diese Bemühungen werden in Firefox 11 fortgesetzt.
- Die Methoden
IDBIndex.count()
undIDBObjectStore.count()
wurden hinzugefügt. - Die Methode
IDBCursor.advance()
wurde hinzugefügt. - Wenn in
IDBObjectStore.createIndex()
oderIDBDatabase.createObjectStore()
ein unbekannter optionaler Parameter übergeben wird, löst Gecko keine Ausnahme mehr aus, sondern ignoriert ihn. - Wenn
IDBTransaction.abort()
aufgerufen wird, werden alle ausstehendenIDBRequest
-Elemente mit demerrorCode
ABORT_ERROR
versehen. - Die Methoden
IDBObjectStore.delete()
undIDBCursor.delete()
setzen jetzt das Attributresult
des zurückgegebenenIDBRequest
aufundefined
. - Die Methode
IDBDatabase.setVersion()
wurde entfernt, da sie aus der neuesten Spezifikation entfernt wurde. Die Version der Datenbank wird durch die MethodeIDBFactory.open()
angegeben, die aktualisiert wurde, und der Rückrufonupgradeneeded
ermöglicht das Aktualisieren des Schemas der Datenbank. Die Version selbst wurde von einemDOMString
auf einunsigned long long
geändert. Die SchnittstelleIDBVersionChangeRequest
wurde entfernt und durch die neue SchnittstelleIDBOpenDBRequest
ersetzt. - Wenn Sie eine Datenbank mit
IDBFactory.open()
öffnen und derversion
-Parameter nicht angegeben ist und die Datenbank nicht existiert, wird sie mit einer Version1
erstellt. - Die Methode
IDBFactory.deleteDatabase()
wurde hinzugefügt. - Methoden, die über ein
IDBKeyRange
suchen (wieIDBObjectStore.openCursor
undIDBIndex.getKey
), können entweder einen einzigen Schlüssel oder einen Schlüsselbereich akzeptieren.
Sonstiges
- Wenn der richtige MIME-Typ
image/svg+xml
übergeben wird, erstellt derDOMParser
jetzt einSVGDocument
, wenn er eine Zeichenkette mit SVG erhält. - Früher gab es bei
element.setAttribute()
einen Fehler bei der Analyse von Ganzzahlen, wenn die Ganzzahl nicht-numerische Zeichen beinhaltete (zum Beispiel "42foo"). Jetzt wird dies korrekt als die Zahl 42 abgeschnitten, gemäß der Spezifikation. - Die ESC-Taste führt nicht länger dazu, dass der
onkeydown
-Handler fälschlicherweise aufgerufen wird. - Die
NameList
-Schnittstelle wird nicht mehr implementiert; sie hatte vorher eine Implementierung, ohne dass ein Zugriff darauf möglich war. - Die Methode
document.createProcessingInstruction()
funktioniert nun sowohl bei HTML- als auch bei XML-Dokumenten.ProcessingInstruction
-Knoten sind weiterhin nur auf XML-Dokumenten verfügbar, aber da Knoten zwischen Dokumenten verschoben werden können, ist es nützlich, diese auch auf HTML-Dokumenten erstellen zu können. - Die
responseType
"moz-json
" vonXMLHttpRequest
eingeführt in Firefox 9, wurde auf den neuesten Entwurf der Spezifikation aktualisiert und das Präfix entfernt. Siehe Hinweis in Firefox bug 707142.
CSS
- CSS-3D-Transformationen werden jetzt unterstützt. Dies umfasst Unterstützung für die Eigenschaften
transform-style
,perspective
,perspective-origin
undbackface-visibility
, sowie für 3D-Transformationsfunktionen in den Eigenschaftentransform
und<transform-function>
. Weitere Informationen finden Sie unter Using CSS transforms. - Zwei neue Werte für die CSS-Eigenschaft
unicode-bidi
wurden hinzugefügt:-moz-isolation
und-moz-plaintext
. Der Wert-moz-isolation
isoliert, aus einer Richtungs-Perspektive, das Element von seiner Umgebung, sodass es eine andere Richtung haben kann. Ein Element mitunicode-bidi:-moz-isolation
verhält sich wie ein<bdi>
-Element. Der Wert-moz-plaintext
weist den Browser an, die Unicode-Browser-Heuristik zu verwenden, um die Richtung zu bestimmen, und nicht die CSS-Eigenschaftdirection
. - Die Eigenschaften
linear-gradient()
undrepeating-linear-gradient()
wurden aktualisiert, um die neueto
-Syntax und den magic corner-Algorithmus zu unterstützen. Dies erlaubt es, einen präzisen Farbwert an einer Ecke eines verlaufsgefüllten Kastens anzugeben. - Die Behandlung der
text-overflow
-Eigenschaft in Fällen, in denen der Kasten auf beiden Seiten überläuft und die Eigenschafttext-overflow
auf nur eine Seite gesetzt ist, wurde korrigiert. - Die Behandlung der
position
-Eigenschaft bei Elementen innerhalb positionierter<table>
-Elemente wurde repariert. Diese Änderung betrifft das Layout von Seiten; wir entsprechen nun jedoch der CSS-Spezifikation und anderen Browsern, sodass dies leicht zu korrigieren sein sollte. - Das Kollabieren von Rändern um
<table>
-Elemente wurde repariert, um der CSS-Spezifikation zu entsprechen. Zuvor wurden die Ränder von Tabellenelementen nicht mit angrenzenden Elementen kollabiert, was zu einem falschen Layout führte. Diese Änderung betrifft das Layout von Seiten; wir entsprechen nun jedoch der CSS-Spezifikation und anderen Browsern, sodass dies leicht zu korrigieren sein sollte.
SVG
- Das
<mask>
-Element wurde aktualisiert, um sowohl sRGB als auch linearRGB zu unterstützen, und verwendet nun standardmäßig sRGB, gemäß der neuesten SVG-1.1-Spezifikation.
Netzwerk
- Der HTTP-Header
Accept-Charset
wird bei HTTP-Anfragen nicht länger gesendet. In seiner Abwesenheit sollten Server mit UTF-8 antworten.
Entwicklertools
- Das
console
-Objekt hat zwei neue Methoden:console.time()
undconsole.timeEnd()
, mit denen Timer auf einer Seite gesetzt werden können. - Der neue Page Inspector wurde hinzugefügt. Er bietet eine hervorragende Möglichkeit, das HTML und CSS hinter Ihrem Inhalt zu untersuchen und zu manipulieren.
Änderungen für Mozilla- und Add-On-Entwickler
Eine Übersicht über mögliche Probleme, die auftreten können, wenn Sie Ihr Add-On aktualisieren, um Firefox 10 zu unterstützen, finden Sie unter Updating add-ons for Firefox 10.
Hinweis:
Der veraltete Datentyp PRBool
wurde entfernt! Überall, wo er in der Dokumentation erwähnt wird, wird jetzt der Standard-C++-Typ bool
verwendet. Die Dokumentation wird in Zukunft aktualisiert, aber behalten Sie dies vorerst im Hinterkopf.
Manifeste
- Unterstützung für
<em:strictCompatibility>
wurde dem Installationsmanifest hinzugefügt. Diese erlaubt es Add-On-Autoren, das Maximum der Version ihrer Erweiterung zu überprüfen. Wenn auftrue
gesetzt, wird das Add-On deaktiviert, wenn die Anwendungs-Version größer ist als<em:maxVersion>
. Firefox 10 setzt standardmäßig voraus, dass Add-Ons kompatibel sind, unabhängig von der angegebenen maximalen Version. Diese Einstellung überschreibt diese Präferenz. 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äre Komponente enthält, da solche Add-Ons immer strikter überprüft werden (denken Sie daran, dass binäre Komponenten immer für jede größere Firefox-Version neu kompiliert werden müssen). - Wenn Sie zum alten Verhalten zurückkehren möchten – d. h. zum strikten Kompatibilitäts-Check für alle Add-Ons, unabhängig vom Wert der
strictCompatibility
-Einstellung in ihren Manifesten, können Sie die Einstellungextensions.strictCompatibility
auftrue
setzen.
XUL
- Für bootstrapped Add-Ons, die eine
chrome.manifest
-Datei verwenden, wird die Manifestdatei jetzt automatisch registriert. Details finden Sie im Abschnitt Adding user interface with a chrome.manifest.
XPConnect
- Mehrere neue Eigenschaften und Methoden wurden zu
Components.utils
hinzugefügt, die Zugriff auf verschiedene Debugging-bezogene Informationen gewähren.
Schnittstellenänderungen
- Die Schnittstellen
mozISpellCheckingEngine
undnsIEditorSpellCheck
wurden aktualisiert, um es möglich zu machen, dass restartless Add-Ons Wörterbücher zum Rechtschreibprüfer hinzufügen können. - Das Attribut
nsIBrowserHistory.lastPageVisited
wurde entfernt. - Die Schnittstelle
nsIDocumentViewer
wurde innsIContentViewer
integriert. - Die Schnittstelle
nsIURIFixup
hat eine neue Flagge,FIXUP_FLAG_USE_UTF8
, die es ermöglicht, UTF-8 anstelle des Plattform-Zeichensatzes zu verwenden, wenn Konvertierungen durchgeführt werden.
Plug-in-Änderungen
- Die neue Variable
NPNVdocumentOrigin
wurde hinzugefügt; diese gibt den Dokument-Ursprung zurück und ist sicherer alswindow.location
.
Änderungen im Build-System
- Die
--disable-rdf
Build-Option, die tatsächlich das erfolgreiche Bauen unmöglich machte, wurde entfernt. Es wird weiterhin daran gearbeitet, die RDF-Unterstützung vollständig zu entfernen, aber derzeit benötigt XUL sie immer noch, um zu funktionieren. Fortschritte zur Entfernung der letzten Überreste von RDF finden Sie unter Firefox bug 559505. - Die
--disable-smil
Build-Option wurde entfernt.