Firefox 10 für Entwickler
Firefox 10 wurde am 31. Januar 2012 veröffentlicht. Dieser Artikel bietet Informationen über die neuen Funktionen und wesentlichen Fehlerkorrekturen in dieser Version sowie Links zu detaillierter Dokumentation für sowohl Webentwickler als auch Add-on-Entwickler.
Hinweis: Firefox 10 ist die erste Version dieses Browsers mit zwei Ziffern. Dies kann zu Problemen mit einigen User-Agent-Erkennungsskripten führen. Stellen Sie sicher, dass Sie diese und die Skripte in eingebetteter Drittanbieter-Software, wie Bibliotheken, überprüfen. Weitere Informationen hierzu finden Sie im Artikel auf hack.mozilla.org über zweistellige Firefox-Versionen.
Änderungen für Webentwickler
>HTML
- Das neue HTML5-Element
<bdi>
zur bidirektionalen Isolierung, das die Isolierung von Textteilen mit unterschiedlicher Richtung ermöglicht, wurde implementiert. Dies ist besonders nützlich, wenn Texte mit unbekannter Richtung angezeigt werden sollen, die beispielsweise aus einer Datenbank stammen, inmitten von Text mit bekannter, möglicherweise unterschiedlicher Richtung. - Sie können jetzt ein Fragment "top" für das
href
-Attribut angeben, um einen Link zum Seitenanfang zu erstellen. Dies funktionierte früher, verschwand dann eine Zeitlang und ist jetzt zurück, um mit der HTML5-Spezifikation kompatibel zu sein. Zum Beispiel:<a href="#top">Zurück zum Seitenanfang</a>
.
JavaScript
- Die Methode
WeakMap.set()
gibt jetztundefined
zurück, anstatt sich selbst. - Ein Fehler, der in Firefox 7 bei regulären Ausdrücken eingeführt wurde, wurde behoben. Siehe Firefox Bug 683838, wenn Sie die Details wissen möchten.
- Sie können die veraltete ECMAScript für XML (E4X) Syntax nicht mehr im ECMAScript 5 Strict Mode verwenden (also nach
"use strict;"
).
DOM
DOM3 Events
- Die DOM-Event-Methode
event.stopImmediatePropagation
wurde implementiert. - Die Mausereignisse
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 fürdocument.xmlVersion
schlägt jetzt eine Möglichkeit vor, 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. Anstelle vonnode1.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 gesendet, wenn der Status geändert wird.
Vollbild-API
- Unterstützung für
document.fullscreenEnabled
wurde hinzugefügt. - Die neue Eigenschaft
:-moz-full-screen-ancestor
wurde hinzugefügt. Dies ermöglicht das Matchen von Elementen, die Vorfahren eines Elements im Vollbildmodus sind.
Batterie-API
- Experimentelle Unterstützung für
navigator.mozBattery
wurde hinzugefügt (kann durch Setzen der Präferenzdom.battery.enabled
auftrue
aktiviert werden und wird ab Firefox 11 standardmäßig aktiviert sein).
Canvas
- Die Methode
createPattern()
wirft jetzt eine Ausnahme, wenn eine Null-Große-Quelle-Canvas angegeben wird. - Wenn Sie einen nicht-endlichen Wert für einen der numerischen Parameter von
putImageData()
verwenden, wird der Aufruf jetzt still ignoriert, anstatt eine Ausnahme zu werfen, im Einklang mit der Spezifikation.
WebGL
- Firefox 10 unterstützt jetzt die
OES_standard_derivatives
-Erweiterung. - Neue Präferenzen wurden hinzugefügt, um die Kompatibilität von WebGL-Code mit minimal ausgestatteten Geräten auf Ihrer vollständigen Entwicklungsplattform zu testen.
Web Worker
- Die Attribute
XMLHttpRequest.responseType
undXMLHttpRequest.response
sind jetzt innerhalb von Workern verfügbar. - Der
Worker()
-Konstruktor akzeptiert jetzt data URLs.
IndexedDB
Es wurden große Anstrengungen unternommen, um IndexedDB auf den neuesten Entwurf der Spezifikation zu aktualisieren. Diese Arbeit wird 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()
wirft Gecko keine Ausnahme mehr, sondern ignoriert sie. - Wenn
IDBTransaction.abort()
aufgerufen wird, erhalten alle ausstehendenIDBRequest
-Anfragen ihrenerrorCode
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 durch dieIDBFactory.open()
-Methode angegeben, die aktualisiert wurde, und deronupgradeneeded
-Callback ermöglicht es, das Schema der Datenbank zu aktualisieren. Die Version selbst wurde von einemDOMString
in einunsigned long long
geändert. DieIDBVersionChangeRequest
-Schnittstelle wurde entfernt und durch die neueIDBOpenDBRequest
-Schnittstelle ersetzt. - Beim Öffnen einer Datenbank mit
IDBFactory.open()
, wenn derversion
-Parameter nicht angegeben wird und die Datenbank nicht existiert, wird sie mit einer Version von1
erstellt. - Die Methode
IDBFactory.deleteDatabase()
wurde hinzugefügt. - Methoden, die über einen
IDBKeyRange
suchen (wieIDBObjectStore.openCursor
undIDBIndex.getKey
), können entweder einen einzelnen Schlüssel oder einen Schlüsselbereich akzeptieren.
Sonstiges
- Wenn der richtige MIME-Typ
image/svg+xml
übergeben wird, erstellt derDOMParser
jetzt einSVGDocument
, wenn ihm ein String mit SVG übergeben wird. - Früher, wenn
element.setAttribute()
Ganzzahlen analysierte, wurde ein Fehler gemeldet, wenn die Ganzzahl irgendwelche nicht-numerischen Zeichen enthielt (zum Beispiel "42foo"). Jetzt wird dies korrekt als die Zahl 42 abgeschnitten, entsprechend der Spezifikation. - Die ESC-Taste führt nicht mehr fälschlicherweise dazu, dass der
onkeydown
-Handler fälschlicherweise aufgerufen wird. - Die
NameList
-Schnittstelle wird nicht mehr implementiert; zuvor gab es eine Implementierung ohne eine Möglichkeit, tatsächlich darauf zuzugreifen. - Die Methode
document.createProcessingInstruction()
funktioniert jetzt sowohl auf HTML- als auch auf XML-Dokumenten.ProcessingInstruction
-Knoten werden nach wie vor nur auf XML-Dokumenten unterstützt, aber da Knoten zwischen Dokumenten verschoben werden können, ist es hilfreich, sie auch auf HTML-Dokumenten erstellen zu können. - Die
XMLHttpRequest
responseType
"moz-json"
eingeführt in Firefox 9 wurde auf den neuesten Entwurf der Spezifikation aktualisiert und das Präfix wurde 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 CSS-Transformationen verwenden. - 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 Richtungssicht 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-Browserheuristik zur Bestimmung der Richtung zu verwenden und nicht die CSS-Eigenschaftdirection
. - Die CSS-Eigenschaften
linear-gradient()
undrepeating-linear-gradient()
wurden aktualisiert, um die neueto
-Syntax und den magic-corner-Algorithmus zu unterstützen. Dies ermöglicht es, eine präzise Farbe an der Ecke eines verlaufsgefüllten Kastens anzugeben. - Das Verhalten der CSS-Eigenschaft
text-overflow
in Fällen, in denen der Kasten auf beiden Seiten überläuft, während dietext-overflow
-Eigenschaft nur für eine Seite eingestellt ist, wurde korrigiert. - Die Handhabung der CSS-Eigenschaft
position
bei Elementen innerhalb von positionierten<table>
-Elementen wurde behoben. Diese Änderung wird das Layout von Seiten beeinflussen; jedoch sind wir jetzt konform mit der CSS-Spezifikation und mit anderen Browsern, daher sollte dies einfach zu beheben sein. - Das Zusammenfallen von Rändern um
<table>
-Elemente wurde korrigiert, um der CSS-Spezifikation zu entsprechen. Zuvor würden die Ränder von Tabellenelementen nicht mit anderen angrenzenden Elementen kollabieren, was zu einem fehlerhaften Layout führte. Diese Änderung wird das Layout von Seiten beeinflussen; jedoch sind wir jetzt konform mit der CSS-Spezifikation und mit anderen Browsern, daher sollte dies einfach zu beheben sein.
SVG
- Das
<mask>
-Element wurde aktualisiert, um sowohl sRGB als auch linearRGB zu unterstützen und standardmäßig auf sRGB eingestellt zu sein, gemäß der neuesten Überarbeitung der SVG 1.1-Spezifikation.
Netzwerk
- Der HTTP-Header
Accept-Charset
wird nicht mehr in HTTP-Anfragen gesendet. In seiner Abwesenheit sollten Server mit der Bereitstellung 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 zu setzen. - Der neue Page Inspector wurde hinzugefügt, der eine hervorragende Möglichkeit bietet, das HTML und CSS hinter Ihren Inhalten 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, lesen Sie Aktualisierung von Add-ons für Firefox 10.
Hinweis:
Der alte PRBool
Datentyp wurde abgeschafft! Überall in der Dokumentation, wo darauf Bezug genommen wird, wird jetzt der Standard-C++-bool
-Typ 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. Es erlaubt Add-on-Autoren, sich für die Überprüfung der maximalen Version ihrer Erweiterung zu entscheiden. Wenn auftrue
gesetzt, wird das Add-on deaktiviert, wenn die Anwenderversion größer ist als<em:maxVersion>
. Firefox 10 geht standardmäßig davon aus, dass Add-ons kompatibel sind, unabhängig von ihrer angegebenen maximalen Version. Dieses Flag überschreibt diese Präferenz. Sie sollten dies einstellen, wenn Ihr Add-on Dinge tut, die wahrscheinlich durch Firefox-Updates gebrochen werden, aber nicht, wenn Ihr Add-on eine binäre Komponente hat, da solche Add-ons immer streng überprüft werden (denken Sie daran, dass binäre Komponenten immer für jedes große Firefox-Release neu kompiliert werden müssen). - Wenn Sie zum alten Verhalten zurückkehren möchten – das heißt zur strikten Kompatibilitätsprüfung für alle Add-ons, unabhängig vom Wert des
strictCompatibility
-Flags in ihren Manifesten –, können Sie dieextensions.strictCompatibility
-Präferenz auftrue
setzen.
XUL
- Bootstrapped-Add-ons, die eine
chrome.manifest
-Datei verwenden, haben jetzt die Manifestdatei automatisch registriert. Details finden Sie im Abschnitt Hinzufügen einer Benutzeroberfläche mit einer chrome.manifest.
XPConnect
- Mehrere neue Eigenschaften und Methoden wurden zu
Components.utils
hinzugefügt, die den Zugriff auf verschiedene Debugging-bezogene Informationen gewähren.
Schnittstellenänderungen
- Die Schnittstellen
mozISpellCheckingEngine
undnsIEditorSpellCheck
wurden aktualisiert, um es Add-ons ohne Neustart zu ermöglichen, dem Rechtschreibprüfer Wörterbücher hinzuzufügen. - 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 Ihnen ermöglicht, ihr mitzuteilen, UTF-8 anstelle des Plattformzeichensatzes zu verwenden, wenn sie Umwandlungen durchführt.
Plug-in-Änderungen
- Die neue Variable
NPNVdocumentOrigin
wurde hinzugefügt; sie gibt den Ursprung des Dokuments 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 komplett zu entfernen, aber derzeit benötigt XUL es noch, um zu funktionieren. Fortschritte beim Entfernen der letzten RDF-Reste finden Sie im Firefox Bug 559505. - Die Build-Option
--disable-smil
wurde entfernt.