Firefox 4 für Entwickler

Firefox 4, in der Beta-Version seit Juni 2010 verfügbar, verbessert die Performance, fügt weitere Unterstützung für HTML5 sowie anderen fortschreitenden Technologien hinzu und verbessert die Sicherheit noch weiter. Dieser Artikel liefert Informationen über das anstehende Release von Firefox 4 und welche neuen Funktionen für Webentwickler, Add-on Entwickler sowie Gecko-Entwickler verfügbar sein werden.

Viele der genannten Funktionen können bereits in einem Firefox 4 Beta Release oder in einem Nightly Build getestet werden.

Hinweis: Dieser und viele verweisende Artikel befinden sich im Aufbau. Einige Artikelnamen sind Platzhalter und müssen noch erstellt und übersetzt werden.

Funktionen für Webentwickler

Gecko verwendet nun einen HTML5 Parser, welcher etliche Fehler behebt und die Kompatibilität sowie Performance verbessert.
Es ist nun auch möglich SVG und MathML direkt im HTML Markup zu notieren.

HTML

Der neue HTML5 Parser
Was der neue Parser für Ihre Webseiten bedeutet und wie Sie jetzt SVG und MathML innerhalb Ihrer Inhalte verwenden können.
HTML5 Formulare
Verbesserungen an Webformularen durch neue Attribute und Typen aus HTML5. Neben diesen Änderungen gibt es außerdem neue Typen für das <input> Element, Datenvalidierung und vieles mehr.
HTML5 Abschnitte
Die Gecko-Engine unterstützt nun die neuen HTML5 Elemente, die das Dokument in Abschnitte gliedern: <article>, <section>, <nav>, <aside>, <hgroup>, <header> und <footer>.
Weitere HTML5 Elemente
Gecko unterstützt nun auch die folgenden neuen HTML5 Elemente: <mark>, <figure> und  <figcaption>.
HTML5 hidden Attribut
Dieses Attribut, welches jedem Element zugewiesen werden kann, wird verwendet, um Inhalte auf einer Webseite zu verstecken, die zur Zeit nicht von Relevanz sind.
WebSockets
Eine Einleitung zur neuen WebSockets API für Echtzeitkommunikation zwischen einer Webanwendung und einem Server.

Sonstige HTML Änderungen

  • <textarea> Elemente sind nun standardmäßig vergrößerbar. Die resize CSS Eigenschaft kann benutzt werden, um dies abzuschalten.
  • canvas.getContext und canvas.toDataURL werfen keine Exceptions mehr aus, wenn sie mit unbekannten Argumenten aufgerufen worden sind.
  • canvas2dcontext.lineCap und canvas2dcontext.lineJoin werfen keine Exception mehr aus, wenn sie auf einen unbekannten Wert gesetzt werden.
  • canvas2dcontext.globalCompositeOperation wirft keine Exception mehr aus, wenn ein unbekannter Wert gesetzt wurde und unterstützt nicht länger den nicht-standardisierten Wert darker .
  • Die Unterstützung für das veraltete <spacer> Element, welches in keinem Browser vorhanden ist, wurde entfernt.

CSS

CSS Transitions
CSS Transitions werden in Firefox 4 unterstützt.
Berechnete Werte in CSS
Unterstützung für berechnete Werte über calc() ist in Arbeit. Siehe Bug 363249.
Gruppierung von Selektoren
Der Selektor :-moz-any wurde hinzugefügt, um Selektoren zu gruppieren und Kombinatoren zu zerlegen.
Unterstützung von Ausschnitten in Hintergrundbildern
Die -moz-image-rect CSS Eigenschaft ermöglicht es Ausschnitte von Bildern als Hintergrundbild zu verwenden.
CSS Touch Eigenschaften
Unterstützung für Touch Eigenschaften wurde hinzugefügt. Details folgen noch.
Verwendung von beliebigen Elementen als CSS Hintergrund
Es kann nun die -moz-element CSS Funktion sowie die document.mozSetImageElement() DOM Funktion verwendet werden, um beliebige HTML Elemente als Hintergrund zu verwenden.
Datenschutz beim :visited Selektor
Es gab Änderungen am :visited Selektor, welcher nun nicht mehr dazu missbraucht werden kann, Informationen über besuchte Links preis zu geben. Die Änderungen betreffen einige Webanwendungen.

Sonstige CSS Änderungen

  • Die text-shadow Eigenschaft beschränkt den Unschärfe-Radius auf 300px aus Gründen der Performance.
  • Die :-moz-window-inactive Pseudoklasse wurde implementiert.
  • Die -moz-tab-size Eigenschaft lässt Sie die Breite eines Tabzeichens (U+0009) festlegen, wenn der Text gerendert wird.
  • Die CSS3 resize Eigenschaft wurde implementiert.
  • Die-moz-background-size Eigenschaft wurde zum endgültigen background-size Namen geändert; -moz-background-size wird nicht länger unterstützt.
  • Die overflow Eigenschaft wird nicht länger auf Table-group Elemente (<thead>, <tbody>, und <tfoot>) angewendet.
  • Der :-moz-focusring Pseudo-Selektor lässt das Aussehen eines Elements festlegen, wenn Gecko der Meinung ist, dass das Element über den Fokus verfügt.
  • Die -moz-element CSS Funktion ermöglicht die Verwendung eines beliebigen Elements als Hintergrund für background-image und background.
  • Die -moz-appearance Eigenschaft unterstützt nun den Wert -moz-win-borderless-glass, welches dem Element ein rahmenloses »Aero Glass« Aussehen zuweist.
  • Die Pseudo-Klassen :valid und :invalid werden nun automatisch zur Validierung von <input> Feldern angewendet.
  • Die :required Pseudo-Klasse wird nun automatisch allen <input> Feldern zugewiesen, die über das required Attribut verfügen. Die Pseudo-Klasse :optional wird auf alle anderen Felder angwendet.
  • Die :-moz-placeholder Pseudo-Klasse wurde hinzugefügt, damit Sie Placeholder-Texte in Formularfelder anpassen können.
  • Die Pseudo-Klasse :-moz-handler-crashed wurde hinzugefügt. Dies wird auf Elemente, deren Plugins abgestürzt sind, angewendet.

Grafik und Video

WebGL
Der WebGL Standard wird nun von Firefox unterstützt.
Leistung von Grafiken und Videos optimieren
Tipps und Tricks zur Optimierung der Performance von Grafiken und Videos in Firefox 4.
Unterstützung von WebM Videos
Das neue offene WebM Videoformat wird nun von Gecko 2.0 unterstützt.
SMIL Animation
Unterstützung von SMIL Animationen in SVG ist nun verfügbar. Siehe Bug 482402.
SVG als images und CSS Backgrounds verwenden
Sie können nun SVG in ein <img> Element einsetzen, genau wie in Hintergrundbildern in CSS. Siehe Bug 272288, Bug 276431 und Bug 231179. Hinweis: Diese Funktion ist zur Zeit noch nicht implementiert. Die Unterstützung ist ab Firefox 4 Beta 5 geplant.
Das buffered Attribut für Medien
Das buffered Attribut für <video> und <audio> Elemente wird nun unterstützt und lässt Sie bestimmen, welche Bereiche einer Mediendatei zwischengespeichert werden sollen. Die TimeRanges DOM Schnittstelle wurde für diesen Zweck ebenfalls neu implementiert.
Das preload Attribut
Das preload Attribut aus der HTML5 Spezifikation wurde implementiert und ersetzt das vorherige (und nicht länger unterstützte) autobuffer Attribut. Das betrifft die Elemente <video> und <audio> sowie das nsIDOMHTMLMediaElement Interface.
Raw Videocodec
Unterstützung für das OggYUV raw Videoformat wurde zur Verwendung im <video> Element implementiert.

DOM

Grenzen von Rechtecken beziehen
Das Range Objekt verfügt nun über die Methoden getClientRects() und getBoundingClientRect(). Siehe Bug 396392.
Maus-Events auf beliebigen Elementen erfassen
Unterstützung für vom Internet Explorer stammende APIs: setCapture() und releaseCapture(). Siehe Bug 503943.
Änderungen am Browserverlauf vornehmen
Der bestehende Verlauf, durch das window.history Objekt verfügbar, unterstützt nun die neuen HTML5 pushState() und replaceState() Methoden.
Touch und Multi-Touch Events
Unterstützung für Touch und Multi-Touch Events wurde hinzugefügt.
Animationen mit MozBeforePaint
Ein neues Event wurde hinzugefügt, welches, in Verbindung mit der window.mozRequestAnimationFrame() Method und der window.mozAnimationStartTime Eigenschaft, eine Möglichkeit bereitstellt, Animationen zu erstellen, die mit einer anderen synchron sind.

Sonstige DOM Änderungen

Sicherheit

Einleitung zur Content Security Policy
Content Security Policy (CSP) ist ein Mozilla Entwurf, welcher dazu dienen soll, von Webdesignern und Serveradministratoren festlegen zu lassen, wie ihre Webseiten interagieren. Das Ziel ist Attacken zu entdecken und zu entschärfen, darunter auch Cross-Site Scripting und Dateninjektionsattacken.
HTTP Strict Transport Security
HTTP Strict Transport Security ist ein Sicherheitsmechanismus, welcher Webseiten dazu befähigt, dem Browser mitzuteilen, dass nur über HTTPS kommuniziert werden darf, statt über über HTTP.
Der X-FRAME-OPTIONS Response Header
Der X-FRAME-OPTIONS HTTP Response Header, welcher vom Internet Explorer 8 eingeführt wurde, wird nun auch vom Firefox unterstützt. Das erlaubt Seiten anzugeben, ob die Seiten Frames verwenden dürfen oder nicht, und wenn, ob die Frames von der gleichen Herkunft stammen müssen.
Änderungen am User-Agent String
Damit der Betrag am Datengehalt, welcher über HTTP Anfragen gesendet wird, verringert wird, wurden die Sprachkürzel vom User-Agent String entfernt.

JavaScript

Einen Überblick über die Änderungen, die in JavaScript 1.8.5 implementiert wurden, siehe Neu in JavaScript 1.8.5. JavaScript wird in Firefox 4 einige zusätzliche Funktionen des ECMAScript 5 Standards implementieren.

Änderungen für Mozilla- und Add-on-Entwickler

Für hilfreiche Tipps zur Aktualisierung von bestehenden Erweiterungen für Firefox 4, siehe Erweiterungen für Firefox 4 aktualisieren.

JavaScript Codemodule

Services.jsm
Das Services.jsm Codemodul stellt Methoden zur Verfügung, die es sehr einfach machen, Referenzen zu gemeinsam-verwendeten Diensten, wie dem Präferenzendienst oder dem Window Mediator herzustellen.
JS-ctypes API
Die JS-ctypes API ermöglicht es C-kompatible fremde Bibliotheksfunktionen aufzurufen ohne XPCOM zu benutzen.
Add-ons Manager
Der neue Add-ons Manager bietet Informationen über installierte Add-ons, unterstützt die Verwaltung und bietet Wege zu Installation und Deinstallation von Add-ons.
Codemodule von chrome: URLs laden
Sie können JavaScript Codmodule über chrome: URLs laden, sogar innerhalb von JAR Dateien.
DownloadLastDir.jsm
Das DownloadLastDir.jsm Codemodul stellt die globale Variable gDownloadLastDir zur Verfügung, welche einen String enthält, den Sie benutzen können, um herauszufinden, wie der Pfad heißt in dem der letzte Download stattgefunden hat. Dieses Modul bewältigt Probleme, die durch Downloads im privaten Modus entstehen können.

Sonstige Änderungen an Codemodulen
Edit section

  • Das NetUtil.jsm Codemodul bietet nun die Methode readInputStreamToString() an, welche Ihnen ermöglicht, beliebige Bytes eines Streams in einen String einzulesen (sogar wenn der Stream Leerstellen enthält).

DOM Änderungen

ChromeWorker
Ein neuer Worker-Typ für privilegierten Code. Dinge wie js-ctypes lassen sich von Workers in Erweiterungs- und Anwendungscode verwenden.
Touch Events
Unterstützung von (nicht-standardisierten) Touch-Events wurde hinzugefügt. Das ermöglicht Ihnen mehrere Fingerbewegungen auf einem Touch-Screen zur gleichen Zeit zu erfassen.

XUL

Änderungen am tabbrowser Element

Mehre Änderungen wurden am tabbrowser Element vorgenommen, die Erweiterungen, die mit Tabs arbeiten, betreffen.

  • TabClose/TabSelect/TabOpen Events gehören nicht länger zum tabbrowser Element (gBrowser). Event-Listener für diese Ereignisse sollten zu gBrowser.tabContainer hinzugefügt werden als direkt zu gBrowser.
  • Das Tab-Kontextmenü ist nicht länger ein anonymes Kindelement des tabbrowser Elements. Es kann daher direkt mit XUL Overlays überlagert werden. Es kann außerdem direkt in JavaScript über gBrowser.tabContextMenu erreicht werden. Siehe in diesem Blogpost(engl.) für weitere Details.
  • Die neue Eigenschaft visibleTabs wurde hinzugefügt, um einen Array der aktuell sichtbaren Tabs zu erhalten. Dadurch lässt sich ermitteln, welcher Tab im aktuellen Tab-Set sichtbar ist. Das wird zum Beispiel von Firefox Panorama genutzt.
  • Die Methode showOnlyTheseTabs wurde hinzugefügt. Diese wird von Firefox Panorama verwendet.
  • Die Methode getIcon wurde hinzugefügt, welche Ihnen das Favicon des Tabs liefert ohne das browser Element verwenden zu müssen.
  • Die Eigenschaft tabbrowser.tabs wurde hinzugefügt, welche Ihnen eine Liste der Tabs in einem tabbrowser Element liefert.

Fernbetrieb von XUL entfernt

Entferntes XUL wird nicht länger unterstützt . Das betrifft XUL Dokumente, die über HTTP ausgeliefert werden.

Sonstige XUL Änderungen

  • Das readonly Attribute funktioniert nun korrekt in Feldern.
  • Das resizer Element lässt Sie nun das element Attribut dazu verwenden, um ein Element als größenveränderbar festzulegen.
  • Das "active" Attribut wirkt nicht mehr auf aktive XUL Fenster. Stattdessen sollten Sie die neue :-moz-window-inactive Pseudoklasse verwenden, um unterschiedliche Styles anzuwenden.
  • Das emptytext Attribut ist nicht mehr erwünscht (deprecated). Sie sollten placeholder stattdessen benutzen.
  • Das popup Element wird nicht weiter unterstützt. Sie sollten menupopup stattdessen verwenden.
  • Das window Element bietet nun das accelerated Attribut an. Fall true ist es dem Hardware-Layer-Manager gestattet das Fenster zu beschleunigen.
  • Das stack Element unterstützt nun die Attribute bottom und right.
  • Das alternatingbackground Attribut für tree Elements wird nicht länger unterstützt. Sie können die :-moz-tree-row Pseudo-Klasse stattdessen verwenden.
  • Die Overflow-Button der Lesezeichenleiste mit chevronPopup ist nicht länger anonym und hat eine Id von PlacesChevron.
  • Das tabs Element hat nun die Eigenschaft tabbox, welches die alte _tabbox Eigenschaft ersetzt, welche nun veraltet ist (und niemals dokumentiert war).
  • XUL window Elemente verfügen nun über das drawintitlebar Attribut. Falls true, ist die Titelleiste im Bereich des Fensters enthalten und es wird gestattet in der Titelleiste zu zeichnen.

Storage

Sonstige Storage API Änderungen

XPCOM

XPCOM Änderungen in Gecko 2.0
Details über Änderungen an XPCOM in Firefox 4.
Components.utils.getGlobalForObject()
Diese neue Methode gibt das globale Objekt, mit welchem ein Objekt assoziiert ist, zurück. Das ersetzt ein Verwendungszweck für das jetzt entfernte __parent__.

PlacesEdit section

  • Places Query-Ergebnisse können nun von mehreren Observern beobachtet werden und die Queries können asynchron ausgeführt werden. Das bedeutet, dass es einige Änderungen an den Schnittstellen nsINavHistoryResult, nsINavHistoryQueryOptions, und nsINavHistoryContainerResultNode gibt. Außerdem wurde das nsINavHistoryResultViewer Interface zu nsINavHistoryResultObserver umbenannt.
  • Einige neue Hinweise wurden hinzugefügt, um dem Browser das Verfolgen des Beenden-Prozesses des Places-Services besser zu ermöglichen. Daher sind die meisten Hinweise nur für den internen Gebrauch gedacht, aber der Hinweis places-connection-closed ist verfügbar, um festzustellen wann der Places-Dienst das Beenden fertiggestellt hat.

Interface ÄnderungenEdit section

  • Die Schnittstellen nsIDocShell und nsIWebBrowser verfügen nun über das neue Attribut isActive, welches verwendet wird, um Optimierungen an Code-Pfaden, die zur Zeit nicht sichtbar sind, zu ermöglichen.

Memory Management

Fehlerfreie Speicherzuordnung
Mozilla stellt nur fehlerfreie Speicherzuordnungen zur Verfügung, die garantiert nicht null zurückgeben. Sie sollten diesen Artikel lesen, um zu lernen wie dies funktioniert und wie man explizit fehlbare oder unfehlbare Speicherzuordnung gestattet.

Weitere Änderungen

Gopher Unterstützung entfernt
Das Gopher Protokoll wird nicht länger nativ unterstützt. Unterstützung kann über die OverbiteFF Erweiterung erreicht werden.
Standardplugin entfernt
Das Standardplugin wurde entfernt. Der Ordner für Anwendungsplugins wurde außerdem entfernt. Unterstützung von Installationen über dieses Verzeichnis existiert aber immer noch. Siehe Bug 533891.
Erweiterungsmananger durch AddonManager ersetzt
nsIExtensionManager wurde durch den AddonManager ersetzt. Da es keinen Weg gibt den Installationsort von einer gegebenen Erweiterungs-ID zu bekommen, ist der beste Workaround den Verzeichnisdienst zu verwenden, um das Profilverzeichnis zu finden und dann "extensions" anzuhängen (obwohl dies nicht Erweiterung beachtet, die sich außerhalb des Profilverzeichnisses befinden).

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: fscholz
Zuletzt aktualisiert von: fscholz,