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.
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. Dieresize
CSS Eigenschaft kann benutzt werden, um dies abzuschalten.canvas.getContext
undcanvas.toDataURL
werfen keine Exceptions mehr aus, wenn sie mit unbekannten Argumenten aufgerufen worden sind.canvas2dcontext.lineCap
undcanvas2dcontext.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 Wertdarker
.- 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 diedocument.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ültigenbackground-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ürbackground-image
undbackground
. - 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 dasrequired
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. DieTimeRanges
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 dasnsIDOMHTMLMediaElement
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()
undgetBoundingClientRect()
. Siehe Bug 396392. - Maus-Events auf beliebigen Elementen erfassen
- Unterstützung für vom Internet Explorer stammende APIs:
setCapture()
undreleaseCapture()
. Siehe Bug 503943. - Änderungen am Browserverlauf vornehmen
- Der bestehende Verlauf, durch das
window.history
Objekt verfügbar, unterstützt nun die neuen HTML5pushState()
undreplaceState()
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 derwindow.mozAnimationStartTime
Eigenschaft, eine Möglichkeit bereitstellt, Animationen zu erstellen, die mit einer anderen synchron sind.
Sonstige DOM Änderungen
- Das Wrapping eines
<textarea>
Elements kann nun über das DOMwrap
Attribut gesteuert werden. Bug 41464 - DOM
file
Objekte bieten nun eineurl
Eigenschaft an. - DOM
file
Objekte verfügen nun über eineclick()
Methode. (Noch nicht erledigt, siehe Bug 36619.) - FormData für XMLHttpRequest.
- Die
element.isContentEditable
Eigenschaft wurde implementiert. - Die
mozSourceNode
Eigenschaft wurde demDragTransfer
Objekt hinzugefügt. - Die
selection.modify()
Methode wurde demSelection
Objekt hinzugefügt. Damit können Sie die aktuelle Textauswahl einfach überschreiben oder die Cursor-Position im Browserfenster verändern. - Unterstützung des
window.directories
Objekts und derdirectories
Funktion fürwindow.open
, welche in keinem anderen Browser unterstützt werden, wurden entfernt. Verwenden Siepersonalbar
stattdessen. Bug 474058 - Die
event.mozInputSource
Eigenschaft wurde zur den DOM Benutzerschnittstellen Events hinzugefügt; diese nicht-standardisierte Eigenschaft, lässt Sie den Typen des Geräts feststellen von dem das Event kommt. - Das
document.onreadystatechange
Event wurde implementiert. - Die
document.createElement
Methode akzeptiert nicht weiter<
und>
um den Tagnamen im Quirksmode. - Die Eigenschaft
window.mozPaintCount
wurde hinzugefügt. Dadurch können Sie erfahren, wie oft ein Dokument gezeichnet wurde. Das kann nützlich sein, wenn Sie die Performance Ihrer Webanwendung testen möchten. - Der Sprachkürzel wurde von
window.navigator.appVersion
undwindow.navigator.userAgent
entfernt. Verwenden Siewindow.navigator.language
oder deb Accept-Language Header stattdessen. Bug 572656. - Die Eigenschaften
document.height
unddocument.width
wurden entfernt Bug 585877.
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 VariablegDownloadLastDir
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
- Das
NetUtil.jsm
Codemodul bietet nun die MethodereadInputStreamToString()
an, welche Ihnen ermöglicht, beliebige Bytes eines Streams in einen String einzulesen (sogar wenn der Stream Leerstellen enthält).
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.
- 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 dasbrowser
Element verwenden zu müssen. - Die Eigenschaft
tabbrowser.tabs
wurde hinzugefügt, welche Ihnen eine Liste der Tabs in einemtabbrowser
Element liefert. - Das
readonly
Attribute funktioniert nun korrekt in Feldern. - Das
resizer
Element lässt Sie nun daselement
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 solltenplaceholder
stattdessen benutzen. - Das
popup
Element wird nicht weiter unterstützt. Sie solltenmenupopup
stattdessen verwenden. - Das
window
Element bietet nun dasaccelerated
Attribut an. Falltrue
ist es dem Hardware-Layer-Manager gestattet das Fenster zu beschleunigen. - Das
stack
Element unterstützt nun die Attributebottom
undright
. - Das
alternatingbackground
Attribut fürtree
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 Eigenschafttabbox
, welches die alte_tabbox
Eigenschaft ersetzt, welche nun veraltet ist (und niemals dokumentiert war). - XUL
window
Elemente verfügen nun über dasdrawintitlebar
Attribut. Fallstrue
, ist die Titelleiste im Bereich des Fensters enthalten und es wird gestattet in der Titelleiste zu zeichnen. - Die
mozIStorageBindingParamsArray
Schnittstelle hat nun ein Längenattribut, das die Anzahl dermozIStorageBindingParams
Objekte im Array angibt. mozIStorageStatement.bindParameters()
gibt nun einen Fehler aus, wenn der festgelegtemozIStorageBindingParamsArray
leer ist.- Die Methode
mozIStorageConnection.clone()
wurde hinzugefügt, welche eine bestehende Datenbankverbindung klonen lässt. - Die Methode
mozIStorageConnection.asyncClose()
wurde hinzugefügt, welche eine bestehende Datenbankverbindung asynchron klonen lässt. Sie können ein Callback definieren, um hingewiesen zu werden, wenn die Close-Operation fertig ist. - Die Methode
mozIStorageConnection.setGrowthIncrement()
wurde hinzugefügt, welche Ihnen erlaubt einen Betrag festzulegen, welcher angibt um wie viel eine Datenbankdatei größer werden darf, um Fragmentierungen in SQLite zu reduzieren. - Der
SQLITE_CONSTRAINT
Fehler wird nun alsNS_ERROR_STORAGE_CONSTRAINT
statt einesNS_ERROR_FAILURE
ausgegeben. - 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__
. - 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
, undnsINavHistoryContainerResultNode
gibt. Außerdem wurde dasnsINavHistoryResultViewer
Interface zunsINavHistoryResultObserver
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. - Die Schnittstellen
nsIDocShell
undnsIWebBrowser
verfügen nun über das neue AttributisActive
, welches verwendet wird, um Optimierungen an Code-Pfaden, die zur Zeit nicht sichtbar sind, zu ermöglichen. - 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.
- 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).
DOM Änderungen
XUL
Änderungen am tabbrowser Element
Mehre Änderungen wurden am tabbrowser
Element vorgenommen, die Erweiterungen, die mit Tabs arbeiten, betreffen.
Fernbetrieb von XUL entfernt
Entferntes XUL wird nicht länger unterstützt . Das betrifft XUL Dokumente, die über HTTP ausgeliefert werden.