Firefox-10-Release-Notes für Entwickler
Firefox 10 wurde am 31. Januar 2012 veröffentlicht. Dieser Artikel enthält Informationen über die neuen Funktionen und wichtigen Fehlerbehebungen in dieser Version sowie Links zu detaillierterer Dokumentation für Webentwickler und Add-on-Entwickler.
Hinweis: Firefox 10 ist die erste Veröffentlichung dieses Browsers mit zwei Ziffern. Dies kann bei einigen UA-Sniffing-Skripten zu Problemen führen. Prüfen Sie diese unbedingt, ebenso wie diejenigen in Drittanbieter-Software, die Sie in Ihre Seiten einbetten, etwa Bibliotheken. 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>für bidirektionale Isolation, das die Isolation von Textteilen mit einer anderen Schreibrichtung ermöglicht, wurde implementiert. Dies ist besonders nützlich, wenn beispielsweise Text mit unbekannter Schreibrichtung aus einer Datenbank innerhalb von Text mit einer bekannten und möglicherweise anderen Schreibrichtung angezeigt wird. - Sie können jetzt für das Attribut
hrefein Fragment von „top“ angeben, um einen Link zum Seitenanfang zu erstellen. Dies funktionierte früher, war dann eine Zeit lang nicht verfügbar und ist nun zur Kompatibilität mit der HTML5-Spezifikation wieder vorhanden. Beispiel:<a href="#top">Return to top of page</a>.
JavaScript
- Die Methode
WeakMap.set()gibt nunundefinedstatt sich selbst zurück. - In Firefox 7 wurde ein Fehler bei der Verarbeitung regulärer Ausdrücke eingeführt; dieser wurde behoben. Die genauen Details finden Sie unter Firefox bug 683838.
- Sie können die veraltete ECMAScript-for-XML-Syntax (E4X) nicht mehr im ECMAScript-5-Strict-Mode verwenden, also nach
"use strict;".
DOM
DOM3 Events
- Die DOM-Event-Methode
event.stopImmediatePropagationwurde implementiert. - Die Maus-Events
mouseenterundmouseleavewurden implementiert.
DOM4
- Das Attribut
document.xmlVersion(das nur gelesen, aber nicht gesetzt werden konnte) wurde entfernt, da es in der DOM4-Spezifikation als veraltet eingestuft wurde. Der Artikel zudocument.xmlVersionschlägt nun eine Möglichkeit vor, festzustellen, ob das Dokument HTML oder XML ist, ohne diese Eigenschaft zu verwenden. - Das Attribut
document.xmlStandalonewurde entfernt, da es in der DOM4-Spezifikation als veraltet eingestuft wurde. - Das Attribut
document.xmlEncodingwurde entfernt, da es in der DOM4-Spezifikation als veraltet eingestuft wurde. - Das Attribut
text.isElementContentWhiteSpacewurde entfernt, da es in der DOM4-Spezifikation als veraltet eingestuft wurde. - Die Methode
text.replaceWholeTextwurde entfernt, da sie in der DOM4-Spezifikation als veraltet eingestuft wurde. - Die Methode
node.isSameNodewurde entfernt, da sie in der DOM4-Spezifikation als veraltet eingestuft wurde. Stattnode1.isSameNode(node2)können Sie den Operator===verwenden:node1 === node2.
Page Visibility API
- Die Page Visibility API wurde implementiert (mit Präfix):
document.mozHidden,document.mozVisibilityStatesind verfügbar, und das Eventmozvisibilitychangedwird ausgelöst, wenn sich der Status ändert.
Full Screen API
- Unterstützung für
document.fullscreenEnabledwurde hinzugefügt. - Die neue Eigenschaft
:-moz-full-screen-ancestorwurde hinzugefügt. Damit können Sie Elemente abgleichen, die Vorgänger eines Elements im Vollbildmodus sind.
Battery API
- Experimentelle Unterstützung für
navigator.mozBatterywurde hinzugefügt. Sie kann aktiviert werden, indem die Einstellungdom.battery.enabledauftruegesetzt wird, und wird ab Firefox 11 standardmäßig aktiviert sein.
Canvas
- Die Methode
createPattern()löst nun eine Ausnahme aus, wenn ein Quell-Canvas mit Größe null angegeben wird. - Wenn Sie für einen der numerischen Parameter von
putImageData()einen nicht endlichen Wert verwenden, wird der Aufruf nun stillschweigend ignoriert, statt eine Ausnahme auszulösen, entsprechend der Spezifikation.
WebGL
- Firefox 10 unterstützt nun die Erweiterung
OES_standard_derivatives. - Neue Einstellungen wurden hinzugefügt, um WebGL-Code auf Ihrer vollständigen Entwicklungsplattform hinsichtlich der Kompatibilität mit Geräten mit minimalen Fähigkeiten zu testen.
Web Workers
- Die Attribute
XMLHttpRequest.responseTypeundXMLHttpRequest.responsesind nun innerhalb von Workers verfügbar. - Der Konstruktor
Worker()akzeptiert nun data URLs.
IndexedDB
Es wurden große Fortschritte bei der Aktualisierung von IndexedDB auf die neueste Entwurfsspezifikation erzielt. Diese Arbeit wird in Firefox 11 fortgesetzt.
- Die Methoden
IDBIndex.count()undIDBObjectStore.count()wurden hinzugefügt. - Die Methode
IDBCursor.advance()wurde hinzugefügt. - Wenn ein unbekannter optionaler Parameter in
IDBObjectStore.createIndex()oderIDBDatabase.createObjectStore()angetroffen wird, löst Gecko keine Ausnahme mehr aus, sondern ignoriert ihn. - Wenn
IDBTransaction.abort()aufgerufen wird, erhalten alle ausstehendenIDBRequestfür ihrenerrorCodeden WertABORT_ERROR. - Die Methoden
IDBObjectStore.delete()undIDBCursor.delete()setzen nun das Attributresultdes zurückgegebenenIDBRequestaufundefined. - Die Methode
IDBDatabase.setVersion()wurde entfernt, da sie aus der neuesten Spezifikation entfernt wurde. Die Version der Datenbank wird über die aktualisierte MethodeIDBFactory.open()angegeben, und der Callbackonupgradeneededermöglicht die Aktualisierung des Datenbankschemas. Die Version selbst wurde vonDOMStringzuunsigned long longgeändert. Das InterfaceIDBVersionChangeRequestwurde entfernt und durch das neue InterfaceIDBOpenDBRequestersetzt. - Wenn eine Datenbank mit
IDBFactory.open()geöffnet wird, der Parameterversionnicht angegeben ist und die Datenbank nicht existiert, wird sie mit Version1erstellt. - Die Methode
IDBFactory.deleteDatabase()wurde hinzugefügt. - Methoden, die über einen
IDBKeyRangesuchen, wieIDBObjectStore.openCursorundIDBIndex.getKey, können entweder einen einzelnen Schlüssel oder einen Schlüsselbereich akzeptieren.
Sonstiges
- Wenn der korrekte MIME-Typ
image/svg+xmlübergeben wird, erstelltDOMParsernun einSVGDocument, wenn ihm ein String mit SVG übergeben wird. - Wenn
element.setAttribute()früher Ganzzahlen analysierte, wurde ein Fehler gemeldet, wenn die Ganzzahl nichtnumerische Zeichen enthielt, beispielsweise „42foo“. Nun wird dies entsprechend der Spezifikation korrekt auf die Zahl 42 gekürzt. - Die ESC-Taste führt nicht mehr fälschlicherweise dazu, dass der Handler
onkeydownaufgerufen wird. - Das Interface
NameListwird nicht mehr implementiert; zuvor gab es eine Implementierung ohne Möglichkeit, tatsächlich darauf zuzugreifen. - Die Methode
document.createProcessingInstruction()funktioniert nun sowohl für HTML- als auch für XML-Dokumente. Knoten vom TypProcessingInstructionwerden weiterhin 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 in Firefox 9 eingeführte
XMLHttpRequest-responseType"moz-json"wurde auf den neuesten Entwurf der Spezifikation aktualisiert und das Präfix wurde entfernt. Siehe den Hinweis in Firefox bug 707142.
CSS
- CSS-3D-Transforms werden nun unterstützt. Dazu gehören die Eigenschaften
transform-style,perspective,perspective-originundbackface-visibilitysowie 3D-Transform-Funktionen in den Eigenschaftentransformund<transform-function>. Details finden Sie unter Using CSS transforms. - Zwei neue Werte für die CSS-Eigenschaft
unicode-bidiwurden hinzugefügt:-moz-isolationund-moz-plaintext. Der Wert-moz-isolationisoliert das Element hinsichtlich der Schreibrichtung von seiner Umgebung, sodass es eine andere Schreibrichtung haben kann. Ein Element mitunicode-bidi:-moz-isolationverhält sich wie ein<bdi>-Element.-moz-plaintextweist den Browser an, die Unicode-Browserheuristik zur Bestimmung der Schreibrichtung und nicht die CSS-Eigenschaftdirectionzu verwenden. - Die CSS-Eigenschaften
linear-gradient()undrepeating-linear-gradient()wurden aktualisiert, um die neueto-Syntax und den Algorithmus für magic corner zu unterstützen. Damit können Sie an der Ecke eines mit einem Farbverlauf gefüllten Felds eine präzise Farbe angeben. - Die Behandlung durch die Eigenschaft
text-overflowfür Fälle, in denen das Feld auf beiden Seiten überläuft, während die Eigenschafttext-overflowauf Überlauf nur auf einer Seite gesetzt ist, wurde korrigiert. - Die Behandlung der Eigenschaft
positionfür Elemente innerhalb positionierter<table>-Elemente wurde korrigiert. Diese Änderung wird das Layout von Seiten beeinflussen; wir entsprechen nun jedoch der CSS-Spezifikation und anderen Browsern, daher sollte dies einfach zu beheben sein. - Das Zusammenfallen von Außenabständen um
<table>-Elemente wurde an die CSS-Spezifikation angepasst. Zuvor wurden die Außenabstände von Tabellenelementen nicht zusammen mit anderen angrenzenden Elementen zusammengeführt, was zu einem falschen Layout führte. Diese Änderung wird das Layout von Seiten beeinflussen; wir entsprechen nun jedoch der CSS-Spezifikation und anderen Browsern, daher sollte dies einfach zu beheben sein.
SVG
- Das Element
<mask>wurde aktualisiert, um sowohl sRGB als auch linearRGB zu unterstützen, und verwendet nun standardmäßig sRGB, entsprechend der neuesten Überarbeitung der SVG-1.1-Spezifikation.
Netzwerk
- Der HTTP-Header
Accept-Charsetwird nicht mehr in HTTP-Anfragen gesendet. In dessen Abwesenheit sollten Server UTF-8 senden.
Entwicklerwerkzeuge
- Das Objekt
consoleverfügt über zwei neue Methoden,console.time()undconsole.timeEnd(), mit denen auf einer Seite Timer gesetzt werden können. - Der neue Page Inspector wurde hinzugefügt und bietet eine hervorragende Möglichkeit, das HTML und CSS hinter Ihren Inhalten zu untersuchen und zu bearbeiten.
Änderungen für Mozilla- und Add-on-Entwickler
Eine Übersicht über mögliche Probleme bei der Aktualisierung Ihrer Add-ons für die Unterstützung von Firefox 10 finden Sie unter Updating add-ons for Firefox 10.
Hinweis:
Der alte Datentyp PRBool wurde eingestellt! Überall in der Dokumentation, wo darauf verwiesen wird, wird nun stattdessen der Standard-C++-Typ bool verwendet. Die Dokumentation wird künftig aktualisiert, aber behalten Sie dies vorerst im Hinterkopf.
Manifeste
- Unterstützung für
<em:strictCompatibility>wurde dem Installationsmanifest hinzugefügt. Damit können Add-on-Autoren die Prüfung der maximalen Version ihrer Erweiterung aktivieren. Wenn der Wert auftruegesetzt ist, wird das Add-on deaktiviert, wenn die Anwendungsversion größer als<em:maxVersion>ist. Firefox 10 geht standardmäßig davon aus, dass Add-ons kompatibel sind, unabhängig von ihrer angegebenen maximalen Version. Dieses Flag überschreibt diese Einstellung. Sie sollten dies festlegen, wenn Ihr Add-on Dinge ausführt, die wahrscheinlich durch Firefox-Updates nicht mehr funktionieren, aber nicht, wenn Ihr Add-on eine Binärkomponente hat, da solche Add-ons immer streng geprüft werden. Denken Sie daran, dass Binärkomponenten für jede Hauptversion von Firefox stets neu kompiliert werden müssen. - Wenn Sie zum alten Verhalten zurückkehren möchten – also zur strengen Kompatibilitätsprüfung für alle Add-ons, unabhängig vom Wert des Flags
strictCompatibilityin ihren Manifesten –, können Sie die Einstellungextensions.strictCompatibilityauftruesetzen.
XUL
- Bootstrapped Add-ons, die eine Datei
chrome.manifestverwenden, erhalten die Manifestdatei nun automatisch registriert. Details finden Sie im Abschnitt Adding user interface with a chrome.manifest.
XPConnect
Components.utilswurden mehrere neue Eigenschaften und Methoden hinzugefügt, die Zugriff auf verschiedene Informationen zum Debugging ermöglichen.
Änderungen an Interfaces
- Die Interfaces
mozISpellCheckingEngineundnsIEditorSpellCheckwurden aktualisiert, damit Add-ons ohne Neustart dem Rechtschreibprüfer Wörterbücher hinzufügen können. - Das Attribut
nsIBrowserHistory.lastPageVisitedwurde entfernt. - Das Interface
nsIDocumentViewerwurde innsIContentViewerintegriert. - Das Interface
nsIURIFixupverfügt über ein neues Flag,FIXUP_FLAG_USE_UTF8, mit dem Sie festlegen können, dass bei Konvertierungen UTF-8 statt des Zeichensatzes der Plattform verwendet wird.
Änderungen an Plug-ins
- Die neue Variable
NPNVdocumentOriginwurde hinzugefügt; sie gibt den Dokumentursprung zurück und ist sicherer alswindow.location.
Änderungen am Build-System
- Die Build-Option
--disable-rdf, die tatsächlich einen erfolgreichen Build unmöglich machte, wurde entfernt. Es wird weiterhin daran gearbeitet, RDF-Unterstützung vollständig entfernen zu können, aber derzeit benötigt XUL sie noch, um zu funktionieren. Den Fortschritt beim Entfernen der letzten erforderlichen RDF-Bestandteile finden Sie unter Firefox bug 559505. - Die Build-Option
--disable-smilwurde entfernt.