Firefox 4 für Entwickler
Firefox 4, der am 22. März 2011 veröffentlicht wurde, verbessert die Leistung, bietet mehr Unterstützung für HTML5 und andere sich entwickelnde Webtechnologien und erhöht die Sicherheit weiter. Dieser Artikel bietet Informationen über diese Version und welche Funktionen für Webentwickler, Add-on-Entwickler und Gecko-Plattformentwickler verfügbar sind.
Funktionen für Webentwickler
HTML
- Webformulare
-
Ein Überblick über Verbesserungen bei Webformularen. Zu diesen Änderungen gehören neue Eingabetypen im
<input>
Element, Datenvalidierung und mehr. - HTML5-Abschnitte
-
Gecko unterstützt nun die neuen HTML5-Elemente in Bezug auf Dokumentenabschnitte:
<article>
,<section>
,<nav>
,<aside>
,<hgroup>
,<header>
und<footer>
. -
Dieses Attribut, das zu allen Elementen gehört, wird verwendet, um Inhalte auf einer Webseite auszublenden, die für den Benutzer momentan nicht relevant sind.
- Andere HTML5-Elemente
-
Gecko unterstützt jetzt auch die folgenden neuen HTML5-Elemente:
<mark>
,<figure>
und<figcaption>
. - WebSockets
-
Ein Leitfaden zur Verwendung der neuen WebSockets API für die Echtzeitkommunikation zwischen einer Webanwendung und einem Server. Beachten Sie, dass WebSockets, wie sie in Firefox 4 implementiert sind, nicht mit dem endgültigen Standard kompatibel sind und generell nicht verwendet werden sollten.
Canvas-Verbesserungen
Die folgenden Änderungen wurden am CanvasRenderingContext2D
Interface vorgenommen, um unsere <canvas>
Implementierung näher an die Spezifikation zu bringen:
- Die Angabe eines negativen Radius beim Aufruf von
arc()
gibt jetzt korrekt eineINDEX_SIZE_ERR
Ausnahme aus. - Die Angabe von unendlichen Werten beim Aufruf von
createLinearGradient()
undcreateRadialGradient()
gibt jetztNOT_SUPPORTED_ERR
anstelle vonSYNTAX_ERR
aus. - Das Setzen von
miterLimit
auf einen negativen Wert wirft keine Ausnahme mehr; stattdessen werden nicht positive Werte korrekt ignoriert. - Das Setzen von
lineWidth
auf einen negativen Wert wirft keine Ausnahme mehr; stattdessen werden nicht positive Werte korrekt ignoriert. - Die
putImageData()
Methode unterstützt jetzt die optionalen ParameterdirtyX
,dirtyY
,dirtyWidth
unddirtyHeight
.
Verschiedene HTML-Änderungen
<textarea>
Elemente sind jetzt standardmäßig anpassbar; Sie können dies mit derresize
CSS-Eigenschaft deaktivieren.canvas.getContext
undcanvas.toDataURL
werfen keine Ausnahme mehr, wenn sie mit nicht erkannten Argumenten aufgerufen werden.- Das
<canvas>
Element unterstützt jetzt die Mozilla-spezifischemozGetAsFile()
Methode, mit der Sie eine speicherbasierte Datei erhalten können, die ein Bild des Canvas-Inhalts enthält. Weitere Details finden Sie unterHTMLCanvasElement
. Canvas2DContext.lineCap
undCanvas2DContext.lineJoin
werfen keine Ausnahme mehr, wenn sie auf einen nicht erkannten Wert gesetzt werden.Canvas2DContext.globalCompositeOperation
wirft keine Ausnahme mehr, wenn er auf einen nicht erkannten Wert gesetzt wird, und unterstützt den nicht standardmäßigendarker
Wert nicht mehr.- Die Unterstützung für das veraltete
<spacer>
Element, das in allen anderen Browsern fehlte, wurde entfernt. - Das
<isindex>
Element, das durch Aufruf vonDocument.createElement()
erstellt wurde, wird jetzt als einfaches Element ohne Eigenschaften oder Methoden erstellt. - Gecko unterstützt jetzt das Aufrufen von
click()
auf<input>
Elementen, um den Dateiauswahldialog zu öffnen. Siehe das Beispiel im Artikel Verwendung von Dateien aus Webanwendungen. - Das
<input>
Element unterstützt ein neuesmozactionhint
Attribut, das es ermöglicht, das Label für die Eingabetaste auf virtuellen Tastaturen festzulegen. <script>
Elemente innerhalb von<iframe>
,<noembed>
, und<noframes>
-Elementen werden jetzt ausgeführt, was in früheren Firefox-Versionen nicht der Fall war. Dies entspricht der Spezifikation und passt sich dem Verhalten anderer Browser an.
CSS
- CSS-Übergänge
-
Neue Unterstützung für CSS-Übergänge ist in Firefox 4 verfügbar.
- Berechnete Werte in CSS
-
Unterstützung für
-moz-calc
wurde hinzugefügt. Dies ermöglicht die Angabe von<length>
Werten als mathematische Ausdrücke. - Selektor-Gruppierung
-
Unterstützung für
:-moz-any
, um Selektoren zu gruppieren und Kombinatoren zusammenzufassen. - Unterstützung für Unterrechteck von Hintergrundbildern
-
Die
-moz-image-rect()
Funktion ermöglicht es, Unterrechtecke von Bildern alsbackground-image
zu verwenden. - CSS-Touch-Eigenschaften
-
Unterstützung für Touch-Eigenschaften wurde hinzugefügt. Details und reale Artikelnamen folgen später.
- Verwendung von willkürlichen Elementen als CSS-Hintergründe
-
Sie können die
-moz-element
CSS Funktion und diedocument.mozSetImageElement()
DOM Funktion verwenden, um beliebige HTML-Elemente als Hintergründe zu verwenden. - Datenschutz und der :visited-Selektor
-
Änderungen wurden vorgenommen an den Informationen, die über den Stil besuchter Links mit CSS-Selektoren erhalten werden können. Dies kann einige Webanwendungen beeinflussen.
Neue CSS-Eigenschaften
Eigenschaft | Beschreibung |
-moz-font-feature-settings |
Ermöglicht die Anpassung erweiterter Funktionen von OpenType-Schriftarten. |
-moz-tab-size |
Gibt die Breite in Leerzeichen eines Tab-Zeichens (U+0009) beim Rendern von Text an. |
resize |
Ermöglicht die Steuerung der Dimensionen, in denen ein Element vergrößert werden kann. |
Neue CSS-Pseudoklassen
Pseudoklasse | Beschreibung |
:-moz-handler-crashed |
Wird verwendet, um Elemente zu stylen, deren Plugins abgestürzt sind. |
:-moz-placeholder |
Wird auf Platzhaltertext in Formularfeldern angewendet. |
:-moz-submit-invalid |
Wird auf den Absenden-Button von Formularen angewendet, wenn eines oder mehrere der Formularfelder nicht gültig sind. |
:-moz-window-inactive |
Wird auf Elemente in inaktiven Fenstern angewendet. |
:invalid |
Wird automatisch auf <input> Felder angewendet, wenn deren Inhalt ungültig ist.
|
:optional |
Wird automatisch auf <input> Felder angewendet, die nicht über das required Attribut verfügen.
|
:required |
Wird automatisch auf <input> Felder angewendet, die das required Attribut festlegen.
|
:valid |
Wird automatisch auf <input> Felder angewendet, wenn deren Inhalt erfolgreich validiert.
|
Neue CSS-Pseudoselektoren
Pseudoselektor | Beschreibung |
:-moz-focusring |
Ermöglicht, das Aussehen eines Elements zu spezifizieren, wenn Gecko der Meinung ist, dass eine Fokusanzeige gerendert werden sollte. |
Neue CSS-Funktionen
Funktion | Beschreibung |
:-moz-any |
Ermöglicht das Gruppieren von Selektoren und Kombinatoren zusammenzufassen. |
-moz-calc |
Ermöglicht die Angabe von
<length> Werten als
mathematische Ausdrücke.
|
-moz-element |
Ermöglicht die Verwendung eines beliebigen Elements als Hintergrund für
background-image und
background .
|
-moz-image-rect |
Ermöglicht die Verwendung eines Unterrechtecks eines Bildes als
background-image oder
background .
|
Umbenannte CSS-Eigenschaften
Alter Name | Neuer Name | Anmerkungen |
---|---|---|
-moz-background-size |
background-size |
Der Name -moz-background-size wird nicht mehr unterstützt. |
-moz-border-radius |
border-radius |
Der alte Name wird für eine begrenzte Zeit unterstützt, um Zeit für die Aktualisierung Ihrer Websites zu geben. Rendering-Änderungen wurden ebenfalls vorgenommen, um der neuesten Version der Spezifikation zu entsprechen. |
-moz-box-shadow |
box-shadow |
Verschiedene CSS-Änderungen
- Die
text-shadow
Eigenschaft begrenzt jetzt den Unschärferadius aus Vernunft- und Leistungsgründen auf 300px. - Die
overflow
Eigenschaft gilt nicht mehr für Tabellengruppen-Elemente (<thead>
,<tbody>
und<tfoot>
). - Die
-moz-appearance
Eigenschaft unterstützt jetzt den Wert-moz-win-borderless-glass
, der einem Element ein randloses Aero Glass Aussehen verleiht. - Die
-moz-device-pixel-ratio
Media-Funktion wurde hinzugefügt, um das Verhältnis von Gerätepixeln zu CSS-Pixeln in Media Queries zu verwenden. - Die Handhabung von CSS
<length>
Einheiten in Gecko wurde überarbeitet, um besser zu anderen Browsern zu passen und absolute Längen genauer in Pixelanzahl auf dem Bildschirm basierend auf der DPI des Geräts zu übersetzen.
Grafiken und Video
- WebGL
-
Der sich entwickelnde WebGL-Standard wird jetzt von Firefox unterstützt.
- Optimierung der Grafikleistung
-
Tipps und Tricks, um das Beste aus der Grafik- und Videoleistung in Firefox 4 herauszuholen.
- Unterstützung für WebM-Video
-
Das neue offene WebM Videoformat wird von Gecko 2.0 unterstützt.
- SVG-Animation mit SMIL
-
Unterstützung für SMIL-Animation von SVG ist jetzt verfügbar.
- Verwendung von SVG als Bilder und als CSS-Hintergründe
-
Sie können jetzt SVG mit dem
<img>
Element sowie als CSSbackground-image
verwenden. - Unterstützung des
buffered
Attributs für Medien -
Das
buffered
Attribut auf<video>
und<audio>
Elementen wird jetzt unterstützt, sodass Sie feststellen können, welche Bereiche einer Mediendatei gepuffert wurden. DieTimeRanges
DOM-Schnittstelle wurde implementiert, um dies zu unterstützen. - Medien
preload
Attribut -
Das
preload
Attribut aus der HTML5-Spezifikation wurde implementiert und ersetzt das zuvor implementierte (und nicht mehr unterstützte)autobuffer
Attribut. Dies betrifft die<video>
und<audio>
Elemente sowie diensIDOMHTMLMediaElement
Schnittstelle. - Verbesserungen der SVG-Textpositionierung
-
Sie können jetzt Listen für die Werte der
x
,y
,dx
unddy
Eigenschaften auf SVG<text>
und<tspan>
Elementen angeben. Dadurch können Sie die Positionierung jedes Zeichens in einer Zeichenkette individuell steuern.
DOM
- JavaScript-typisierte Arrays
-
Unterstützung für JavaScript-typisierte Arrays wurde hinzugefügt; damit können Sie Puffer mit Rohdaten unter Verwendung nativer Datentypen manipulieren. Mehrere APIs nutzen dies, einschließlich der Datei-API, WebGL und WebSockets.
- Erhalten von Begrenzungsrechtecken für Bereiche
-
Das
Range
Objekt verfügt jetzt über die Methodenrange.getClientRects()
undrange.getBoundingClientRect()
. - Erfassen von Mausereignissen auf beliebigen Elementen
-
Unterstützung für die von Internet Explorer stammenden APIs
setCapture()
undreleaseCapture()
wurde hinzugefügt. Siehe Firefox Bug 503943. - Manipulation des Browserverlaufs
-
Das bestehende Dokumentverlaufsobjekt, verfügbar über das
window.history
Objekt, unterstützt jetzt die neuen HTML5-MethodenpushState()
undreplaceState()
. - Animationen mit MozBeforePaint
-
Ein neues Ereignis wurde hinzugefügt, das zusammen mit der
window.mozRequestAnimationFrame()
Methode und derwindow.mozAnimationStartTime
Eigenschaft eine Möglichkeit bietet, Animationen zu erstellen, die miteinander synchronisiert sind. - Touch- und Multi-Touch-Ereignisse
-
Unterstützung für Touch- und Multi-Touch-Ereignisse wurde hinzugefügt.
Die DOM-Schnittstellen der HTML-Elemente haben sich geändert
Mehrere HTML-Elemente haben ihre DOM-Schnittstellen auf die in der HTML5-Spezifikation geforderten geändert, wie unten gezeigt.
Schnittstelle in Firefox 3.6 | Schnittstelle in Firefox 4 | HTML-Element |
---|---|---|
HTMLSpanElement |
HTMLElement |
<abbr> , <acronym> , <address> , <b> , <bdo> , <big> , <blink> , <center> , <cite> , <code> , <dd> , <dfn> , <dt> , <em> , <i> , <kbd> , <listing> , <nobr> , <plaintext> , <s> , <samp> , <small> , <strike> , <strong> , <sub> , <sup> , <tt> , <u> , <var> , <xmp> |
HTMLDivElement |
HTMLElement |
<noembed> , <noframes> , <noscript> |
HTMLWBRElement |
HTMLElement |
<wbr> |
Verschiedene DOM-Änderungen
- Der Zeilenumbruch eines
<textarea>
Elements kann jetzt über das DOM gesteuert werden, über daswrap
DOM-Attribut. Firefox-Bug 41464 <script>
Elemente, die mitDocument.createElement()
erstellt und in ein Dokument eingefügt werden, verhalten sich jetzt standardgemäß gemäß der HTML5-Spezifikation. Skripte mit demsrc
Attribut werden ausgeführt, sobald sie verfügbar sind (ohne die Reihenfolge beizubehalten), und Skripte ohne dassrc
Attribut werden synchron ausgeführt. Um Skripte, die mit demsrc
Attribut eingefügt wurden, in der Einfügereihenfolge auszuführen, setzen Sie.async=false
auf sie.- DOM
File
Objekte bieten nun eineurl
Eigenschaft. - FormularDatenn Unterstützung für XMLHttpRequest.
- Die
HTMLElement.isContentEditable
Eigenschaft wurde implementiert. - Die
Document.currentScript
Eigenschaft ermöglicht es Ihnen festzustellen, welches<script>
Element gerade ausgeführt wird. Die neuenbeforescriptexecute
undafterscriptexecute
Ereignisse werden vor und nach der Ausführung eines Skript-Elements ausgelöst. - Die
mozSourceNode
Eigenschaft wurde demDataTransfer
Objekt hinzugefügt. - Die
Selection.modify()
Methode wurde demSelection
Objekt hinzugefügt; dies ermöglicht es Ihnen, die aktuelle Textauswahl oder Cursorposition in einem Browserfenster einfach zu ändern. - Die Unterstützung für das
window.directories
Objekt und dasdirectories
Feature fürwindow.open
, die in keinem anderen Browser unterstützt werden, wurde entfernt. Verwenden Sie stattdessenpersonalbar
. Firefox Bug 474058 - Die
MouseEvent.mozInputSource
Eigenschaft wurde zu DOM-Benutzeroberflächenereignissen hinzugefügt; diese nicht-standardisierte Eigenschaft ermöglicht es Ihnen, den Typ des Geräts zu bestimmen, das ein Ereignis generiert hat. - Das
Document
readystatechange
Ereignis wurde implementiert. - Die
Document.createElement()
Methode akzeptiert im Quirks-Modus keine<
und>
um den Tag-Namen mehr. - Die
Element.setCapture()
undDocument.releaseCapture()
Methoden wurden hinzugefügt, wodurch es Elementen ermöglicht wird, Mausereignisse auch außerhalb ihres normalen Verfolgungsbereichs zu verfolgen, nachdem einmousedown
Ereignis stattgefunden hat. - Die
window.mozPaintCount
Eigenschaft wurde hinzugefügt; sie ermöglicht es Ihnen festzustellen, wie oft ein Dokument bereits gerendert wurde. Dies kann nützlich sein, wenn Sie die Leistung Ihrer Webanwendung testen. - Das Sprach-Token wurde aus
Navigator.appVersion
undNavigator.userAgent
entfernt. Verwenden Sie stattdessenNavigator.language
oder denAccept-Language
Header. Firefox Bug 572656 - Das
XMLHttpRequest
Objekt zeigt nun die Antwort als JavaScript typisiertes Array sowie als Zeichenfolge an, mit der Gecko-spezifischenmozResponseArrayBuffer
Eigenschaft. - Mausereignisse beinhalten jetzt eine
mozPressure
Eigenschaft, die die Druckmenge auf unterstützten druckempfindlichen Eingabegeräten angibt. - Die Methoden
URL.createObjectURL()
undURL.revokeObjectURL()
ermöglichen es, Objekt-URLs zu erstellen, die auf lokale Dateien verweisen. - Die Methode
DOMImplementation.createHTMLDocument()
lässt Sie ein neues HTML-Dokument erstellen. Node.mozMatchesSelector()
wirft jetzt eineSYNTAX_ERR
Ausnahme, wenn die angegebene Selektorzeichenkette ungültig ist, anstatt fälschlicherweisefalse
zu zurückzugeben.- Sie können nun die Werte der SVG-Eigenschaften eines Elements mit derselben Kurzschreibweise wie bei CSS setzen. Zum Beispiel:
element.style.fill = 'lime'
. Weitere Details finden Sie unterstyle
. - Der Wurzelknoten des Dokuments hat jetzt ein
privatebrowsingmode
Attribut, das den Status des privaten Browserverlaufs beschreibt, einschließlich eines Hinweises darauf, ob das private Browsen für die Sitzung vorübergehend oder dauerhaft ist. - Der zweite Parameter der
window.getComputedStyle()
Methode ist jetzt optional, so wie es bei jedem anderen großen Browser der Fall ist. - Das DOM
StorageEvent
Objekt entspricht jetzt der neuesten Version der Spezifikation. - Die minimal erlaubte Verzögerung für die
setTimeout()
Methode ist jetzt eine Voreinstellung,dom.min_timeout_value
. - Das
MozAfterPaint
Ereignis wird standardmäßig nicht mehr gesendet, aufgrund eines potenziellen Sicherheitsproblems. Es kann reaktiviert werden, indem eine Voreinstellung gesetzt wird.
Sicherheit
- Content Security Policy (CSP)
-
Content Security Policy (CSP) ist ein Mozilla-Vorschlag, der Webdesignern und Serveradministratoren dabei helfen soll, zu spezifizieren, wie Inhalte auf ihren Websites interagieren. Ziel ist es, Angriffe wie Cross-Site-Scripting und Dateninjektionsangriffe zu erkennen und zu mildern.
- HTTP Strict Transport Security
-
HTTP Strict Transport Security ist eine Sicherheitsfunktion, die es einer Website ermöglicht, Browsern mitzuteilen, dass sie nur mit HTTPS und nicht mit HTTP kommunizieren sollen.
- Der X-FRAME-OPTIONS Antwortheader
-
Der X-FRAME-OPTIONS HTTP-Antwortheader, der in Internet Explorer 8 eingeführt wurde, wird jetzt von Firefox unterstützt. Dies ermöglicht es Websites, anzugeben, ob ihre Seiten in Frames verwendet werden können und wenn ja, ob dies auf die gleiche Herkunft beschränkt werden soll oder nicht.
- Änderungen am User Agent String
-
Um die Menge an Daten und Entropie in HTTP-Anfragen zu reduzieren (siehe Firefox Bug 572650), wurden die Kryptostärke und Sprach-Token aus dem User-Agent-String entfernt.
JavaScript
Für einen Überblick über die in JavaScript 1.8.5 implementierten Änderungen siehe Neu in JavaScript 1.8.5. JavaScript in Firefox 4 wird eine zusätzliche Einhaltung des ECMAScript 5 Standards haben.
Entwickler-Tools
- Verwendung der Webkonsole
-
Das Webkonsolen-Tool ist eine nützliche Debugging-Hilfe sowohl für Webentwickler als auch für Erweiterungsentwickler.
Hinweis:
Die Fehlerkonsole ist ab Gecko 2.0 standardmäßig deaktiviert. Sie können sie reaktivieren, indem Sie die Voreinstellung devtools.errorconsole.enabled
auf true
ändern und den Browser neu starten.
Änderungen für Mozilla- und Add-on-Entwickler
Für hilfreiche Tipps zum Aktualisieren bestehender Erweiterungen für Firefox 4 lesen Sie Aktualisieren von Erweiterungen für Firefox 4. Es gibt mehrere wichtige Änderungen, die die Kompatibilität mit bestehenden Add-ons beeinträchtigen, daher sollten Sie diesen Artikel unbedingt lesen.
Wenn Sie ein Theme-Entwickler sind, sollten Sie Änderungen an Themes in Firefox 4 lesen, um einige wichtige Änderungen zu verstehen, die Sie beachten müssen.
JavaScript-Code-Module
- Services.jsm
-
Das
Services.jsm
Code-Modul bietet Getter, die es einfach machen, Referenzen zu häufig verwendeten Diensten wie dem Präferenzdienst oder dem Fenstermediator zu erhalten, unter anderem. - JS-ctypes API
-
Die JS-ctypes API ermöglicht das Aufrufen von C-kompatiblen Fremdbibliotheksfunktionen ohne Verwendung von XPCOM.
- Addon-Manager
-
Der neue Addon-Manager bietet Informationen über installierte Add-ons, Unterstützung für die Verwaltung dieser und Möglichkeiten, Add-ons zu installieren und zu entfernen.
- PopupNotifications.jsm
-
Das neue Popup-Benachrichtigungsmodul macht es einfach, attraktive, nicht-modale Benachrichtigungen dem Benutzer zu präsentieren. Sie können sehen, wie man diese API in Verwendung von Popup-Benachrichtigungen verwendet.
- Laden von Code-Modulen von chrome: URLs
-
Sie können nun JavaScript-Code-Module mit chrome: URLs laden, auch innerhalb von JAR-Dateien.
- DownloadLastDir.jsm
-
Das
DownloadLastDir.jsm
Code-Modul bietet die globale VariablegDownloadLastDir
, die einen Zeichenstring enthält, mit dem Sie den Pfad des Verzeichnisses erfahren können, in das der letzte Download stattgefunden hat. Dieses Modul kümmert sich um Probleme im Zusammenhang mit dem privaten Surfen für Sie. - Leistungsmessung unter Verwendung des PerfMeasurement.jsm Code-Moduls
-
Das
PerfMeasurement.jsm
Code-Modul bietet eine API, um Leistungsdaten auf CPU-Ebene in JavaScript-Code zu messen.
Verschiedene Änderungen an Code-Modulen
- Das
NetUtil.jsm
Code-Modul bietet jetzt die MethodereadInputStreamToString()
, die es ermöglicht, beliebige Bytes aus einem Stream in eine Zeichenkette zu lesen, selbst wenn der Stream Nullwerte enthält. - Das XPCOMUtils.jsm Code-Modul bietet jetzt die Hilfsfunktionen IterSimpleEnumerator() und IterStringEnumerator(), um über XPCOM-Enumeratoren zu iterieren.
- Sie können jetzt Worker in JavaScript-Code-Modulen verwenden.
DOM-Änderungen
ChromeWorker
-
Ein neuer Typ von Worker für privilegierten Code; dies ermöglicht es Ihnen, Dinge wie js-ctypes von Worker in Erweiterungen und Anwendungs-Code zu verwenden.
- Touch-Ereignisse
-
Unterstützung für (nicht-standardisierte) Touch-Ereignisse wurde hinzugefügt; diese ermöglichen es Ihnen, mehrere Finger zu verfolgen, die gleichzeitig auf einem Touchscreen bewegt werden.
Andere DOM-Änderungen
- Die neue "document-element-inserted" Benachrichtigung wird gesendet, wenn das Wurzelelement eines Dokuments erstellt wird, jedoch bevor ein Skript darauf ausgeführt wird.
XUL
Änderungen am tabbrowser-Element
Mehrere Änderungen wurden am <xul:tabbrowser>
Element vorgenommen, die Erweiterungen betreffen, die mit Tabs interagieren. Zusätzlich zur Unterstützung von App-Tabs ändern diese Änderungen auch die Tab-Leiste in eine Standard-Toolbar, die es dem Benutzer ermöglicht, Toolbar-Tasten hinein zu ziehen.
- Die Ereignisse
TabClose
,TabSelect
, undTabOpen
blubbern nicht mehr bis zum<xul:tabbrowser>
Element (gBrowser
). Ereignis-Listener für diese Ereignisse sollten demgBrowser.tabContainer
hinzugefügt werden, statt direktgBrowser
. - Das Kontextmenü der Tabs ist kein anonymer Kind des
<xul:tabbrowser>
mehr. Es kann daher direkt mit XUL Overlays überlagert werden. Es kann auch direkter im JavaScript übergBrowser.tabContextMenu
angesprochen werden. Weitere Details finden Sie in diesem Blogpost. - Die neue Eigenschaft
visibleTabs
wurde hinzugefügt, um ein Array der aktuell sichtbaren Tabs zu erhalten; dies lässt Sie feststellen, welche Tabs im aktuellen Tab-Satz sichtbar sind. Dies wird von Firefox Panorama, zum Beispiel, verwendet. - Die neue Methode
showOnlyTheseTabs
wurde hinzugefügt; dies wird von Firefox Panorama verwendet. - Die neue Methode
getIcon
wurde hinzugefügt, die es ermöglicht das Favicon eines Tabs zu erhalten, ohne das<xul:browser>
Element hochzuziehen. - Die neue Eigenschaft
tabbrowser.tabs
wurde hinzugefügt, die es Ihnen ermöglicht, eine Liste der Tabs in einem<xul:tabbrowser>
Element einfach zu erhalten. - Die neuen Methoden
pinTab
undunpinTab
ermöglichen das Anheften und Lösen von Tabs (das heißt, das Umschalten zwischen App-Tabs und regulären Tabs). - Die Methode
getTabModalPromptBox
und das AttributtabModalPromptShowing
wurden dem<xul:tabbrowser>
hinzugefügt, um tab-modale Alarme zu unterstützen.
Änderungen an Popups
- Das
<xul:popup>
Element wird nicht mehr unterstützt; Sie sollten stattdessen<xul:menupopup>
verwenden. (Wenn Sie weiterhinpopup
verwenden, stoßen Sie auf Darstellungsprobleme, da dem Element keine spezielle Bedeutung mehr zukommt. Zum Beispiel kann<xul:menuseparator>
transparent erscheinen, wenn es in einem<xul:popup>
verwendet wird.) - Das
<xul:menupopup>
XUL-Element hat jetzt einetriggerNode
Eigenschaft, die das Knoten angibt, auf dem das Ereignis aufgetreten ist, das das Popup geöffnet hat. Dies erforderte auch die Hinzufügung eines Trigger-Ereignis-Parameters zuropenPopup
Methode. Außerdem wurde die EigenschaftanchorNode
hinzugefügt; sie gibt den Anker an, der beim Erstellen des Popups spezifiziert wurde. - Das
<xul:panel>
Element bietet jetztfade
undflip
Attribute, die zum Konfigurieren des Verhaltens neuer "Pfeil"-Stil-Benachrichtigungspanels verwendet werden.
Entfernte Remote-XUL Unterstützung
Remote XUL wird nicht mehr unterstützt; dies betrifft XUL-Dokumente, die über HTTP bereitgestellt werden; auch können Sie keine XUL-Dokumente mehr mit file://
URLs laden, es sei denn, Sie erstellen die Voreinstellung dom.allow_XUL_XBL_for_file
und setzen sie auf true
. Es gibt jedoch eine Whitelist-Funktion, die verwendet werden kann, um bestimmten Domains das Laden von remote XUL zu erlauben.
Verschiedene XUL-Änderungen
- Das
readonly
Attribut funktioniert jetzt korrekt für XBL-Felder. - Das
<xul:resizer>
Element erlaubt es Ihnen nun daselement
Attribut zu verwenden, um ein Element zum Resizen anzugeben, anstatt das Fenster zu resizen. - Das
<xul:resizer>
Element verfügt jetzt über eintype
Attribut, das es ermöglicht, anzugeben, dass der Resizer für ein Fenster statt einem Element ist, um zu verhindern, dass der Fenster-Resizer zweimal gezeichnet wird. - Das
"active"
Attribut wird nicht mehr für aktive XUL-Fenster gesetzt. Stattdessen können Sie die neue:-moz-window-inactive
Pseudoklasse verwenden, um verschiedenen Hintergrundfensterstilen zuzuordnen. - Das
emptytext
Attribut ist jetzt veraltet; stattdessen sollteplaceholder
verwendet werden. - Das
<xul:window>
Element bietet jetzt einaccelerated
Attribut; wenn dieses wahr ist, kann der Hardware-Layer-Manager das Fenster beschleunigen. - Das
<xul:stack>
Element unterstützt jetzt diebottom
undright
Attribute. - Ereignisse werden nun während der
<xul:toolbox>
Anpassung ausgelöst, was es ermöglicht, Änderungen an Toolbars zu erkennen. - Das
alternatingbackground
Attribut für<xul:tree>
Elemente wird nicht mehr unterstützt; Sie können stattdessen die Pseudoklasse:-moz-tree-row
verwenden. - Der Bookmarks Toolbar Overflow-Button mit dem anonymen ID ChevronPopup ist nicht mehr anonym; er hat eine ID von "PlacesChevron".
- Das
<xul:tabs>
Element hat jetzt einetabbox
Eigenschaft, die die alte_tabbox
Eigenschaft ersetzt, die veraltet ist (und nie dokumentiert war). - XUL
<xul:window>
Elemente haben jetzt dasdrawintitlebar
Attribut; wenn dies wahr ist, enthält der Inhaltsbereich des Fensters die Titelleiste, sodass hinein gezeichnet werden kann. - Neue
TabPinned
undTabUnpinned
Ereignisse ermöglichen es, zu erkennen, wann Tabs angeheftet und gelöst werden. - Das neue
TabAttrModified
Ereignis wird gesendet, wenn sich dielabel
,crop
,busy
,image
oderselected
Attribute eines Tabs ändern. <xul:tab>
Elemente haben jetzt einpinned
Attribut, mit dem Sie feststellen können, ob ein Tab aktuell angeheftet ist oder nicht.- Die
setDirectionIndicator
Klasse auf<xul:tree>
Elementen hat schon lange nichts mehr gemacht; jetzt wird sie gar nicht mehr verwendet. - Das
<xul:window>
Element hat jetzt einchromemargin
Attribut, das es Ihnen ermöglicht den Rand zwischen Chrome und Inhalt auf jeder Seite eines Fensters zu setzen; Sie können dies verwenden, um in die Titelleiste zu zeichnen, zum Beispiel. - Das
<xul:window>
Element hat jetzt eindisablechrome
Attribut; dies wird verwendet, um einen Großteil des Chrome in einem Fenster zu verstecken, wenn es für den in-Browser UI verwendet wird, wieabout:addons
. - Das
<xul:window>
Element hat jetzt eindisablefastfind
Attribut, mit dem Sie die Suchleiste in einem Fenster deaktivieren können, wenn der Inhalt diese nicht unterstützt. Dies wird zum Beispiel von dem Add-ons-Panel verwendet. - Toolbars können jetzt außerhalb von Toolboxes sein, während sie immer noch als Mitglied der
<xul:toolbox>
betrachtet werden, indem dietoolboxid
Eigenschaft der<xul:toolbar>
gesetzt wird. Außerdem hat das<xul:toolbox>
Element jetzt eineexternalToolbars
Eigenschaft, die alle Toolbars auflistet, die als Mitglieder der Toolbox betrachtet werden. - Unterstützung für das Debuggen von XUL-Templates wurde hinzugefügt.
UI-Änderungen, die Entwickler betreffen
- Die Add-on-Leiste
-
Die Statusleiste wurde zugunsten der neuen Add-on-Leiste entfernt. Sie müssen Ihre Erweiterung aktualisieren, um diese zu verwenden, wenn Sie bisher Benutzeroberflächen zur Statusleiste hinzugefügt haben.
- Verstecken des Browser-Chromes
-
Sie können nun das Chrome des Browsers verbergen, wenn es wünschenswert ist, wie z.B. bei
about:addons
.
Speicher
Verschiedene Speicher-API-Änderungen
- Das
mozIStorageBindingParamsArray
Interface hat jetzt ein Length-Attribut, das die Anzahl dermozIStorageBindingParams
Objekte im Array angibt. - Die Methode
mozIStorageStatement.bindParameters()
gibt jetzt einen Fehler zurück, wenn das angegebenemozIStorageBindingParamsArray
leer ist. - Die Methode
mozIStorageConnection.clone()
wurde hinzugefügt, die es ermöglicht, eine bestehende Datenbankverbindung zu duplizieren. - Die Methode
mozIStorageConnection.asyncClose()
wurde hinzugefügt, die es ermöglicht, eine Datenbankverbindung asynchron zu schließen; Sie spezifizieren einen Rückruf, der benachrichtigt wird, wenn der Schließvorgang abgeschlossen ist. - Die Methode
mozIStorageConnection.setGrowthIncrement()
wurde hinzugefügt, die es ermöglicht, die Menge festzulegen, um die eine Datenbankdatei wächst, um SQLite-Fragmentierung zu reduzieren. - Der
SQLITE_CONSTRAINT
Fehler wird jetzt alsNS_ERROR_STORAGE_CONSTRAINT
statt alsNS_ERROR_FAILURE
gemeldet.
XPCOM
Zusätzlich zu den spezifischen Änderungen, die unten angegeben sind, ist es wichtig zu beachten dass es keine gefrorenen Schnittstellen mehr gibt. Alle Schnittstellen sind jetzt unfreezere, unabhängig davon, was die Dokumentation sagen mag. Wir werden die Dokumentation im Laufe der Zeit aktualisieren.
- XPCOM-Änderungen in Gecko 2.0
-
Details zu Änderungen an XPCOM, die die Kompatibilität in Firefox 4 betreffen.
- Components.utils.getGlobalForObject()
-
Diese neue Methode gibt das globale Objekt zurück, mit dem ein Objekt verbunden ist; dies ersetzt einen häufigen Anwendungsfall der jetzt entfernten
__parent__
.
Places
- Places-Abfrageergebnisse können jetzt von mehreren Beobachtern beobachtet werden, und Abfragen können asynchron ausgeführt werden. Dies bedeutet, dass es einige Änderungen an den Schnittstellen
nsINavHistoryResult
,nsINavHistoryQueryOptions
undnsINavHistoryContainerResultNode
gab. Bedeutender ist, dass das InterfacensINavHistoryResultViewer
innsINavHistoryResultObserver
umbenannt wurde. - Einige neue Benachrichtigungen wurden hinzugefügt, um dem Browser die Verfolgung des Herunterfahrens des Places-Dienstes zuverlässiger zu ermöglichen. Davon sind die meisten nur für den internen Gebrauch bestimmt, aber die Benachrichtigung
places-connection-closed
ist verfügbar, um zu wissen, wann der Places-Dienst seinen Herunterfahrprozess abgeschlossen hat. - Der Arraygröße-Ausgabeparameter in mehreren Places-Methoden ist jetzt optional.
- Die Unterstützung für
<menupopup type="places">
wurde entfernt. Stattdessen müssen Sie ein Menü manuell mit Places-Informationen erstellen und füllen, anstatt es für Sie erledigen zu lassen. Weitere Details finden Sie in Darstellung von Places-Informationen mit Ansichten: Menüansicht.
Schnittstellenänderungen
- Die Schnittstellen
nsIDocShell
undnsIWebBrowser
haben jetzt ein neuesisActive
Attribut, das verwendet wird, um die Optimierung der Codepfade für nicht sichtbare Dokumente zu erlauben. - Die Methode
nsIMemory.isLowMemory()
innsIMemory
wurde als veraltet markiert. Sie sollten "memory-pressure" Notifikationen verwenden, um Situationen mit wenig Speicher zu beobachten. - Die API zur Behandlung von Umleitungen auf HTTP-Kanälen hat sich geändert, um diese asynchron zu verarbeiten. Jeder Code, der Umleitungshand
ling unter Verwendung von nsIChannelEventSink.onChannelRedirect()
implementiert, muss aktualisiert werden, um nsIChannelEventSink.asyncOnChannelRedirect()
zu verwenden. Dies akzeptiert einen Rückrufhandler, der aufgerufen werden muss, wenn eine Umleitung erfolgreich abgeschlossen wurde.
- Die Methode
nsINavHistoryResultObserver.batching()
wurde hinzugefügt, um eine Möglichkeit zur Gruppierung von Places-Operationen in Chargen bereitzustellen, wodurch die Anzahl der gelieferten Aktualisierungsbenachrichtigungen reduziert wird, was die Leistung verbessern kann, wenn Beobachter relativ aufwändige Aufgaben ausführen (wie z.B. das Aktualisieren von Ansichten). - Die seit langem veraltete
nsIPref
Schnittstelle wurde schließlich entfernt. Wenn Sie noch nicht zunsIPrefService
gewechselt sind, ist jetzt der richtige Zeitpunkt. - Die Schnittstellen
nsISessionStore
undnsISessionStartup
erhielten Änderungen, um die Sitzungswiederherstellung auf Abruf zu unterstützen. Siehe die MethodensISessionStore.restoreLastSession()
. - Die Methoden
nsIPrincipal.subsumes()
undnsIPrincipal.checkMayLoad()
sowie die Attributeorigin
,csp
undURI
desnsIPrincipal
sind jetzt aus Skripten verfügbar; zuvor waren sie nur aus nativen Code verfügbar. - Die
nsIPrompt
Schnittstelle unterstützt jetzt tab-modale Alarme; siehe Verwendung von tab-modalen Prompts für Details. - Die Methode
nsIEffectiveTLDService.getPublicSuffixFromHost()
lehnt Hostnamen, die mit einem Punkt (".") beginnen, korrekt ab. - Die Methode
mozIJSSubScriptLoader.loadSubScript()
hat jetzt ein optionales Argument, das es Ihnen ermöglicht, den Zeichensatz des Skripts anzugeben; wenn keiner bereitgestellt wird, wird ASCII angenommen (wie immer zuvor angenommen). - Die
nsIAccessProxy
Schnittstelle wurde entfernt. Es war ein Implementierungsdetail, das seinen Nutzen überlebt hat. - Die Schnittstellen
nsIContentView
undnsIContentViewManager
wurden für Firefox Mobile hinzugefügt. Es stellt eine scrollbare Inhaltsansicht dar, deren Inhalte von einem separaten Prozess gezeichnet werden. - Das
nsIDiskCacheStreamInternal
Interface wurde hinzugefügt. - Das
nsIExternalURLHandlerService
Interface wurde hinzugefügt. - Das
nsISyncJPAKE
Interface wurde hinzugefügt. Siehe Firefox Bug 601645. - Das Interface
nsIINIParserWriter
, wurde in Gecko 1.9.2.4 hinzugefügt, um das Schreiben in INI-Dateien zu unterstützen.
Speicherverwaltung
- Infallible Memory Allocation
-
Mozilla bietet jetzt infallible Memory Allocators, die garantiert nicht null zurückgeben. Sie sollten diesen Artikel lesen, um zu erfahren, wie sie arbeiten und wie man explizit fallible versus infallible Memory Allocation anfordert.
Andere Änderungen
- Die meisten Ressourcen innerhalb von Firefox wurden zu einem einzigen JAR-Archiv zusammengefasst,
omni.jar
, was die Startleistung durch reduzierte E/A verbessert. Für Details lesen Sie Über omni.jar. - Die
accessibility.disablecache
-Einstellung wird nicht mehr unterstützt; sie war nur für Debug-Zwecke verfügbar und wird nicht mehr verwendet. - Addons, deren GUID von einer Version zur anderen wechselt, können jetzt ordnungsgemäß aktualisiert werden.
- Als Nebenwirkung der Entfernung von plattformspezifischen Verzeichnissen in Add-on-Bundles können Sie keine unterschiedlichen Standardeinstellungen für jede Plattform mehr bereitstellen.
- Standardmäßig werden Erweiterungen nicht mehr entpackt, wenn sie installiert werden, sondern direkt aus der XPI-Datei ausgeführt. Erweiterungen können die unpack Eigenschaft im install manifest verwenden, um das alte Verhalten zu wählen. Erweiterungen, die
binäre Komponenten, mit js-ctypes geladene DLLs, Suchplugins, Wörterbücher und Fenstersymbole verwenden, müssen angeben, dass sie entpackt werden müssen. Erweiterungen, die SQLite-Datenbanken erstellen, oder Dinge relativ zum Verzeichnis der Erweiterung vom Dateisystem kopieren, müssen möglicherweise ebenfalls ihren Code ändern.
- Sie können jetzt Erweiterungen einschließen, die beim Starten der Anwendung automatisch installiert werden innerhalb eines benutzerdefinierten Firefox.
Weitere Änderungen
- Nur die Root
chrome.manifest
Datei wird geladen -
Nur die Root
chrome.manifest
Datei wird jetzt geladen; wenn Sie sekundäre Manifestdateien geladen haben müssen, können Sie denmanifest
Befehl in Ihrer Rootchrome.manifest
verwenden, um sie zu laden. - Gopher-Unterstützung entfernt
-
Das Gopher-Protokoll wird nicht mehr nativ unterstützt. Fortgesetzte Unterstützung ist über die OverbiteFF Erweiterung verfügbar.
- Content Process Event Handling
-
Um die Unterstützung von Out-of-Process-Plugins und anderen Features mit mehreren Prozessen zu unterstützen, wurde eine neue API eingeführt, um das Senden von Nachrichten über Prozesse hinweg zu unterstützen.
- Bootstrapped Extensions
-
Sie können jetzt Erweiterungen erstellen, die installiert, deinstalliert und aktualisiert (oder zurückgestuft) werden können, ohne dass ein Browser-Neustart erforderlich ist.
- Standard-Plugin entfernt
-
Das Standard-Plugin wurde entfernt. Der Anwendungs-Plugins-Ordner wurde ebenfalls standardmäßig entfernt, jedoch existiert weiterhin Unterstützung für die Installation von Plugins über diesen Ordner. Siehe Firefox Bug 533891.
- Erweiterungs-Manager durch Addon-Manager ersetzt
-
nsIExtensionManager
wurde durch AddonManager ersetzt. - Child HWNDs werden nicht mehr verwendet
-
Firefox erstellt keine Child HWNDs mehr für die interne Nutzung unter Windows. Wenn Sie eine Erweiterung geschrieben haben, die nativen Code verwendet, um diese HWNDs zu manipulieren, wird Ihre Erweiterung nicht unter Firefox 4 funktionieren. Sie müssen entweder auf die Verwendung von HWNDs verzichten oder Ihren Code, der von HWNDs abhängt, in ein NPAPI Plugin
einhüllen. Das ist viel Arbeit, deshalb sollten Sie, wenn möglich, die direkte Verwendung von HWNDs vermeiden.
- Gestenänderungen
-
Die Drei-Finger-hoch und -runter Wischgesten auf Trackpads wurden geändert, um standardmäßig die Firefox Panorama Ansicht (früher TabCandy genannt) zu öffnen und zu schließen. Um diese wieder auf die vorherigen scroll-to-top und scroll-to-bottom Befehle zu ändern, öffnen Sie
about:config
und setzen Siebrowser.gesture.swipe.down
aufcmd_scrollBottom
undbrowser.gesture.swipe.up
aufcmd_scrollTop
.