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 das href-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 jetzt undefined 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

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 zu document.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. Statt node1.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 Ereignis mozvisibilitychanged wird gesendet, wenn der Status geändert wird.

Full Screen API

Battery API

  • Experimentelle Unterstützung für navigator.mozBattery wurde hinzugefügt (kann durch Setzen der Einstellung dom.battery.enabled auf true 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

Web Workers

  • Das Attribut XMLHttpRequest.responseType und XMLHttpRequest.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.

Sonstiges

  • Wenn der richtige MIME-Typ image/svg+xml übergeben wird, erstellt der DOMParser jetzt ein SVGDocument, 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" von XMLHttpRequest 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 und backface-visibility, sowie für 3D-Transformationsfunktionen in den Eigenschaften transform 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 mit unicode-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-Eigenschaft direction.
  • Die Eigenschaften linear-gradient() und repeating-linear-gradient() wurden aktualisiert, um die neue to-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 Eigenschaft text-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() und console.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 auf true 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 Einstellung extensions.strictCompatibility auf true setzen.

XUL

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 und nsIEditorSpellCheck 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 in nsIContentViewer 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 als window.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.

Siehe auch