Firefox 4 für Entwickler
Firefox 4, veröffentlicht am 22. März 2011, verbessert die Leistung, bietet mehr Unterstützung für HTML5 und andere sich entwickelnde Webtechnologien und verbessert 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 Blick auf Verbesserungen bei Webformularen. Zu diesen Änderungen gehören neue Eingabetypen im
<input>
-Element, Datenvalidierung und mehr. - HTML5-Abschnitte
-
Gecko unterstützt jetzt die neuen HTML5-Elemente, die mit Abschnitten in einem Dokument zusammenhängen:
<article>
,<section>
,<nav>
,<aside>
,<hgroup>
,<header>
und<footer>
. -
Dieses Attribut, das allen Elementen gemeinsam ist, wird verwendet, um Inhalte auf einer Webseite zu verbergen, die dem Benutzer derzeit nicht relevant sind.
- Weitere 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 in Firefox 4 implementiert, nicht mit dem endgültigen Standard kompatibel sind und allgemein nicht verwendet werden sollten.
Verbesserungen an Canvas
Folgende Änderungen wurden an der CanvasRenderingContext2D
-Schnittstelle vorgenommen, um unsere <canvas>
-Implementierung näher an die Spezifikation zu bringen:
- Die Angabe eines negativen Radius beim Aufruf von
arc()
führt jetzt korrekt zu einerINDEX_SIZE_ERR
-Ausnahme. - Die Angabe von nicht endlichen Werten beim Aufruf von
createLinearGradient()
undcreateRadialGradient()
löst jetztNOT_SUPPORTED_ERR
anstattSYNTAX_ERR
aus. - Das Setzen von
miterLimit
auf einen negativen Wert führt nicht mehr zu einer Ausnahme; stattdessen werden nicht-positive Werte richtig ignoriert. - Das Setzen von
lineWidth
auf einen negativen Wert führt nicht mehr zu einer Ausnahme; stattdessen werden nicht-positive Werte richtig ignoriert. - Die Methode
putImageData()
unterstützt jetzt die optionalen ParameterdirtyX
,dirtyY
,dirtyWidth
unddirtyHeight
.
Verschiedene HTML-Änderungen
<textarea>
-Elemente sind jetzt standardmäßig größenveränderbar; Sie können dieresize
-CSS-Eigenschaft verwenden, um dies zu deaktivieren.canvas.getContext
undcanvas.toDataURL
führen keine Ausnahme mehr aus, wenn sie mit nicht erkannten Argumenten aufgerufen werden.- Das
<canvas>
-Element unterstützt jetzt die Mozilla-spezifischemozGetAsFile()
-Methode, die es Ihnen ermöglicht, eine speicherbasierte Datei zu erhalten, die ein Bild des Canvas-Inhalts enthält. SieheHTMLCanvasElement
für Details. Canvas2DContext.lineCap
undCanvas2DContext.lineJoin
führen keine Ausnahme mehr aus, wenn sie auf einen nicht erkannten Wert gesetzt werden.Canvas2DContext.globalCompositeOperation
führt keine Ausnahme mehr aus, wenn sie auf einen nicht erkannten Wert gesetzt wird, und unterstützt nicht mehr den nicht standardmäßigendarker
-Wert.- 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, mit dem Sie das Label für die Eingabetaste auf virtuellen Tastaturen angeben können. <script>
-Elemente innerhalb von<iframe>
,<noembed>
und<noframes>
-Elementen werden jetzt ausgeführt, was in früheren Versionen von Firefox nicht der Fall war. Dies entspricht der Spezifikation und entspricht dem Verhalten anderer Browser.
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. Damit können Sie<length>
-Werte als mathematische Ausdrücke angeben. - Selektorgliederung
-
Unterstützung für
:-moz-any
, um Selektoren zu gruppieren und Kombinatoren zu faktorisieren. - Unterstützung von Hintergrundbild-Unterrechtecken
-
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 echte Artikelnamen folgen später.
- Verwendung beliebiger Elemente 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 :visited-Selektor
-
Änderungen wurden vorgenommen, welche Informationen über den Stil besuchter Links mit CSS-Selektoren abgerufen werden können. Dies kann einige Webanwendungen beeinflussen.
Neue CSS-Eigenschaften
Eigenschaft | Beschreibung |
-moz-font-feature-settings |
Ermöglicht die Anpassung fortschrittlicher Funktionen von OpenType-Schriftarten. |
-moz-tab-size |
Gibt die Breite in Leerzeichen eines Tabulators (U+0009) beim Rendern von Text an. |
resize |
Ermöglicht es Ihnen, die Dimensionen zu steuern, in denen ein Element skaliert 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 Abschickknopf von Formularen angewendet, wenn eines oder mehrere 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 das required -Attribut nicht angeben.
|
:required |
Wird automatisch auf <input> -Felder angewendet,
die das required -Attribut angeben.
|
:valid |
Wird automatisch auf <input> -Felder angewendet,
deren Inhalt erfolgreich validiert wurde.
|
Neue CSS-Pseudoselektoren
Pseudoselektor | Beschreibung |
:-moz-focusring |
Ermöglicht es Ihnen, das Erscheinungsbild eines Elements anzugeben, wenn Gecko glaubt, dass es einen Fokus-Indikator haben sollte. |
Neue CSS-Funktionen
Funktion | Beschreibung |
:-moz-any |
Ermöglicht es Ihnen, Selektoren zu gruppieren und Kombinatoren zu faktorisieren. |
-moz-calc |
Ermöglicht es Ihnen, <length> -Werte als
mathematische Ausdrücke anzugeben.
|
-moz-element |
Ermöglicht es, ein beliebiges Element als Hintergrund für
background-image und
background zu verwenden.
|
-moz-image-rect |
Ermöglicht es, ein Unterrechteck eines Bildes als
background-image oder
background zu verwenden.
|
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 Ihnen Zeit zu geben, Ihre Websites zu aktualisieren. Auch Änderungen beim Rendering wurden vorgenommen, um der neuesten Version der Spezifikation zu entsprechen. |
-moz-box-shadow |
box-shadow |
Verschiedene CSS-Änderungen
- Die
text-shadow
-Eigenschaft begrenzt nun den Radius für Unschärfe auf 300px aus Gründen der Vernunft und Leistung. - Die
overflow
-Eigenschaft gilt nicht mehr für tabellengruppierte Elemente (<thead>
,<tbody>
, und<tfoot>
). - Die
-moz-appearance
-Eigenschaft unterstützt jetzt den Wert-moz-win-borderless-glass
, der einem Element ein rahmenloses Aero Glass-Aussehen verleiht. - Die
-moz-device-pixel-ratio
-Medieneigenschaft wurde hinzugefügt, so dass das Verhältnis der Geräte-Pixel pro CSS-Pixel in Medienabfragen verwendet werden kann. - Geckos Behandlung von CSS-
<length>
-Einheiten wurde überarbeitet, um besser mit anderen Browsern übereinzustimmen und absolute Längen genauer in reale Pixelzahlen auf dem Bildschirm zu übersetzen, basierend auf der DPI des Geräts.
Grafik 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 Video-Performance 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 CSS-background-image
verwenden. - Unterstützung des
buffered
-Attributs für Medien -
Das
buffered
-Attribut bei<video>
- und<audio>
-Elementen wird jetzt unterstützt, sodass Sie feststellen können, welche Bereiche einer Mediendatei zwischengespeichert wurden. DieTimeRanges
-DOM-Schnittstelle wurde implementiert, um dies zu unterstützen. preload
-Attribut für Medien-
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 bei 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. Dies ermöglicht Ihnen die Positionierung jedes Zeichens in einem String individuell zu steuern.
DOM
- JavaScript Typed Arrays
-
Unterstützung für JavaScript Typed Arrays wurde hinzugefügt; dies ermöglicht Ihnen die Manipulation von Puffern, die Rohdaten mit nativen Datentypen enthalten. Mehrere APIs nutzen dies, einschließlich der File API, WebGL, und WebSockets.
- Erhalten von Begrenzungsrechtecken für Bereiche
-
Das
Range
-Objekt verfügt jetzt über die Methodenrange.getClientRects()
undrange.getBoundingClientRect()
. - Einfangen von Mausereignissen auf beliebigen Elementen
-
Unterstützung für die von Internet Explorer stammenden
setCapture()
undreleaseCapture()
APIs wurde hinzugefügt. Siehe Firefox Bug 503943. - Manipulation des Browser-Verlaufs
-
Das vorhandene Dokumentverlaufsobjekt, das über das
window.history
-Objekt zugänglich ist, unterstützt jetzt die neuen HTML5-MethodenpushState()
undreplaceState()
. - Animationen unter Verwendung von MozBeforePaint
-
Ein neues Ereignis wurde hinzugefügt, das in Verbindung mit der Methode
window.mozRequestAnimationFrame()
und der Eigenschaftwindow.mozAnimationStartTime
die Erstellung von Animationen ermöglicht, die miteinander synchronisiert sind. - Touch- und Multitouch-Ereignisse
-
Unterstützung für Touch- und Multitouch-Ereignisse wurde hinzugefügt.
Änderungen an DOM-Schnittstellen von HTML-Elementen
Bei mehreren HTML-Elementen wurden 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
- Die Umhüllung 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 wurden, verhalten sich nun standardmäßig gemäß der HTML5-Spezifikation. Skripte mit demsrc
-Attribut werden verfügbar, sobald sie geladen sind (ohne Beibehaltung der Reihenfolge) und Skripte ohne dassrc
-Attribut werden synchron ausgeführt. Um zu bewirken, dass Skripts mit demsrc
-Attribut in der Einfügereihenfolge ausgeführt werden, setzen Sie.async=false
darauf.- DOM-Objekte vom Typ
File
bieten jetzt eineurl
-Eigenschaft. FormData
-Unterstützung fürXMLHttpRequest
.- Die
HTMLElement.isContentEditable
-Eigenschaft wurde implementiert. - Die
Document.currentScript
-Eigenschaft ermöglicht es Ihnen zu bestimmen, welches<script>
-Element gerade ausgeführt wird. Die neuenbeforescriptexecute
undafterscriptexecute
Ereignisse werden vor und nach der Skriptausführung eines Skriptelements ausgelöst. - Die Eigenschaft
mozSourceNode
wurde demDataTransfer
-Objekt hinzugefügt. - Die Methode
Selection.modify()
wurde demSelection
-Objekt hinzugefügt; sie ermöglicht es Ihnen, die aktuelle Textauswahl oder Cursorposition in einem Browserfenster leicht zu ändern. - Unterstützung für das
window.directories
-Objekt und diedirectories
-Funktion fürwindow.open
, welche in keinem anderen Browser unterstützt wird, wurde entfernt. Verwenden Sie stattdessenpersonalbar
. Firefox Bug 474058 - Die Eigenschaft
MouseEvent.mozInputSource
wurde zu DOM-Benutzeroberflächenereignissen hinzugefügt; diese nicht standardmäßige Eigenschaft ermöglicht es Ihnen, den Typ des Geräts zu bestimmen, das ein Ereignis generiert hat. - Das
DOMContentLoaded
-Ereignis des Documents wurde implementiert. - Die Methode
Document.createElement()
akzeptiert in den Quirks-Modus nicht mehr<
und>
um den Tag-Namen. - Die Methoden
Element.setCapture()
undDocument.releaseCapture()
wurden hinzugefügt, wodurch es möglich wird, dass Elemente weiterhin Mausereignisse verfolgen, auch wenn sich die Maus außerhalb ihres normalen Überwachungsbereichs befindet, nachdem einmousedown
-Ereignis aufgetreten ist. - Die Eigenschaft
window.mozPaintCount
wurde hinzugefügt; sie ermöglicht es Ihnen festzustellen, wie oft ein Dokument gezeichnet wurde. Dies kann nützlich sein, um die Leistung Ihrer Webanwendung zu 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 stellt nun die Antwort sowohl als JavaScript-typisierte Array als auch als Zeichenfolge bereit, unter Verwendung der Gecko-spezifischenmozResponseArrayBuffer
-Eigenschaft. - Mausevents beinhalten nun eine
mozPressure
-Eigenschaft, die den Druck auf unterstützten drucksensitiven Eingabegeräten angibt. - Die Methoden
URL.createObjectURL()
undURL.revokeObjectURL()
ermöglichen es Ihnen, Objekt-URLs zu erzeugen, die lokale Dateien referenzieren. - Die Methode
DOMImplementation.createHTMLDocument()
ermöglicht es Ihnen, ein neues HTML-Dokument zu erstellen. Node.mozMatchesSelector()
wirft jetzt eineSYNTAX_ERR
-Ausnahme, wenn der angegebene Selektorstring ungültig ist, anstatt fälschlicherweisefalse
zurückzugeben.- Sie können jetzt die Werte der SVG-Eigenschaften eines Elements mit der gleichen Kurzsyntax wie bei CSS setzen. Zum Beispiel:
element.style.fill = 'lime'
. Siehestyle
für Details. - Die Dokumentenwurzel hat jetzt ein
privatebrowsingmode
-Attribut, das den Status des privaten Surfmodus beschreibt, einschließlich eines Hinweises darauf, ob der private Surfmodus für die Sitzung vorübergehend oder dauerhaft ist. - Der zweite Parameter der Methode
window.getComputedStyle()
ist jetzt optional, wie es in jedem anderen Hauptbrowser der Fall ist. - Das DOM
StorageEvent
-Objekt entspricht jetzt der neuesten Version der Spezifikation. - Die minimal zulässige Verzögerung für die Methode
setTimeout()
undsetTimeout()
ist jetzt eine Präferenz,dom.min_timeout_value
. - Das
MozAfterPaint
-Ereignis wird standardmäßig nicht mehr gesendet, aufgrund eines potenziellen Sicherheitsproblems. Es kann durch Setzen einer Präferenz wieder aktiviert werden.
Sicherheit
- Content-Sicherheitsrichtlinie (CSP)
-
Die Content-Sicherheitsrichtlinie (CSP) ist ein von Mozilla vorgeschlagenes Konzept, das Webdesignern und Serveradministratoren hilft, festzulegen, wie Inhalte auf ihren Websites interagieren. Ziel ist es, Angriffe wie Cross-Site-Scripting und Dateninjektionsangriffe zu erkennen und zu mindern.
- HTTP Strict Transport Security
-
HTTP Strict Transport Security ist ein Sicherheitsmerkmal, das einer Website erlaubt, Browsern mitzuteilen, dass nur über HTTPS und nicht über HTTP kommuniziert werden soll.
- Der X-FRAME-OPTIONS Response-Header
-
Der in Internet Explorer 8 eingeführte X-FRAME-OPTIONS HTTP-Response-Header wird jetzt von Firefox unterstützt. Dadurch können Seiten angeben, ob ihre Seiten in Frames verwendet werden dürfen und, falls ja, ob dies auf den gleichen Ursprung beschränkt sein sollte.
- User-Agent-String-Änderungen
-
Zur Reduzierung der Menge an Daten und Entropie, die in HTTP-Anfragen gesendet werden (siehe Firefox Bug 572650), wurden das Token für Kryptostärke und Sprachinformationen aus dem User-Agent-String entfernt.
JavaScript
Für einen Überblick über die Änderungen in JavaScript 1.8.5 sehen Sie sich Neues in JavaScript 1.8.5 an. JavaScript in Firefox 4 wird zusätzlich Anforderungen des ECMAScript 5 Standards entsprechen.
Entwicklerwerkzeuge
- Verwendung der Webkonsole
-
Das Webkonsole-Werkzeug ist eine nützliche Debugging-Hilfe sowohl für Web- als auch für Erweiterungsentwickler.
Hinweis:
Die Fehlerkonsole ist ab Gecko 2.0 standardmäßig deaktiviert. Sie können sie wieder aktivieren, indem Sie die Präferenz devtools.errorconsole.enabled
auf true
setzen 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 sehen Sie sich Aktualisierung von Erweiterungen für Firefox 4 an. Es gibt mehrere wichtige Änderungen, die die Kompatibilität mit bestehenden Add-ons beeinträchtigen, daher sollten Sie diesen Artikel lesen.
Wenn Sie ein Theme-Entwickler sind, sollten Sie Theme-Änderungen 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, Verweise auf häufig verwendete Dienste zu erhalten, wie den Präferenzdienst oder den Fenstervermittler, unter anderem. - JS-ctypes API
-
Die JS-ctypes API macht es möglich, C-kompatible Fremdbibliotheken zu verwenden, ohne XPCOM zu nutzen.
- Add-ons Manager
-
Der neue Add-ons Manager bietet Informationen über installierte Add-ons, Unterstützung für deren Verwaltung und Möglichkeiten zur Installation und Entfernung von Add-ons.
- 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 aus chrome: URLs
-
Sie können jetzt 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 String enthält, mit dem Sie den Pfad des Verzeichnisses erfahren können, in dem der letzte Download erfolgte. Dieses Modul behandelt für Sie Probleme im Zusammenhang mit dem privaten Surfen. - Messung der Leistung mit dem PerfMeasurement.jsm Code-Modul
-
Das
PerfMeasurement.jsm
-Code-Modul bietet eine API, um CPU-Leistungsdaten in JavaScript-Code zu messen.
Verschiedene Änderungen an Code-Modulen
- Das
NetUtil.jsm
-Code-Modul bietet jetzt die MethodereadInputStreamToString()
, mit der Sie beliebige Bytes von einem Stream in einen String einlesen können, selbst wenn der Stream Nullen enthält. - Das XPCOMUtils.jsm-Code-Modul bietet jetzt die Hilfsmittel IterSimpleEnumerator() und IterStringEnumerator(), um über XPCOM-Enumeratoren zu iterieren.
- Sie können jetzt Arbeiter in JavaScript-Code-Modulen verwenden.
DOM-Änderungen
ChromeWorker
-
Ein neuer Typ von Arbeiter für privilegierten Code; dies ermöglicht es Ihnen, Dinge wie js-ctypes von Arbeitern in Erweiterungen und Anwendungs-Code zu nutzen.
- Touch-Ereignisse
-
Unterstützung für (nicht-standardisierte) Touch-Ereignisse wurde hinzugefügt; diese ermöglichen es, mehrere Fingerbewegungen auf einem Touchscreen gleichzeitig zu verfolgen.
Andere DOM-Änderungen
- Die neue "document-element-inserted"-Benachrichtigung wird gesendet, wenn das Wurzelelement eines Dokuments erstellt wird, aber bevor irgendein Skript darauf ausgeführt wird.
XUL
Änderungen am tabbrowser-Element
Mehrere Änderungen wurden am <xul:tabbrowser>
-Element vorgenommen, die Erweiterungen beeinflussen, die mit Registerkarten interagieren. Zusätzlich zur Unterstützung von App-Registerkarten ändern diese Änderungen auch die Tab-Leiste in eine Standard-Werkzeugleiste, die es dem Benutzer ermöglicht, Werkzeugleistenbuttons hineinzuziehen.
- Die Ereignisse
TabClose
,TabSelect
undTabOpen
blubbern nicht mehr zum<xul:tabbrowser>
-Element (gBrowser
) hinauf. Ereignis-Listener für diese Ereignisse solltengBrowser.tabContainer
hinzugefügt werden, anstatt direkt zugBrowser
. - Das Kontextmenü für Registerkarten ist nicht mehr ein anonymes Kind des
<xul:tabbrowser>
. Es kann daher direkt mit XUL-Overlays überlagert werden. Es kann auch direkter in JavaScript übergBrowser.tabContextMenu
zugegriffen werden. Siehe dieser Blog-Post für weitere Details. - Die neue
visibleTabs
-Eigenschaft wurde hinzugefügt, damit Sie ein Array der aktuell sichtbaren Tabs erhalten können; dies ermöglicht es Ihnen, festzustellen, welche Tabs im aktuellen Tabset sichtbar sind. Dies wird z. B. von Firefox Panorama verwendet. - Die neue
showOnlyTheseTabs
-Methode wurde hinzugefügt; dies wird von Firefox Panorama verwendet. - Die neue
getIcon
-Methode wurde hinzugefügt, die es Ihnen ermöglicht, das Favicon eines Tabs zu erhalten, ohne das<xul:browser>
-Element aufrufen zu müssen. - Die neue
tabbrowser.tabs
-Eigenschaft wurde hinzugefügt, die es Ihnen erleichtert, eine Liste der Tabs in einem<xul:tabbrowser>
-Element zu erhalten. - Die neuen
pinTab
undunpinTab
-Methoden erlauben es Ihnen, Tabs zu befestigen und zu lösen (das heißt, zwischen App-Tabs und regulären Tabs umzuschalten). - Die
getTabModalPromptBox
-Methode und dastabModalPromptShowing
-Attribut wurden dem<xul:tabbrowser>
hinzugefügt, um tab-modale Alerts zu unterstützen.
Änderungen an Popups
- Das
<xul:popup>
-Element wird nicht mehr unterstützt; Sie sollten stattdessen<xul:menupopup>
verwenden. (Wenn Sie weiterpopup
verwenden, werden Sie auf Glitches stoßen, da das Element keine besondere Bedeutung mehr hat. 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 Node angibt, bei dem das Ereignis aufgetreten ist, das zum Öffnen des Popups führte. Dies erforderte auch die Hinzufügung eines Ereignisparameters zuropenPopup
-Methode. Darüber hinaus wurde dieanchorNode
-Eigenschaft hinzugefügt; sie gibt die Verankerung zurück, die beim Erstellen des Popups festgelegt wurde. - Das
<xul:panel>
-Element bietet jetztfade
- undflip
-Attribute, die verwendet werden, um das Verhalten neuer "Pfeil"-Stil-Benachrichtigungspanele zu konfigurieren.
Entfernte Unterstützung für Remote-XUL
Remote XUL wird nicht mehr unterstützt; dies betrifft XUL-Dokumente, die über HTTP bereitgestellt werden; außerdem können Sie XUL-Dokumente nicht mehr mit file://
-URLs laden, es sei denn, Sie erstellen die Präferenz dom.allow_XUL_XBL_for_file
und setzen sie auf true
. Es gibt jedoch eine Whitelist-Funktion, die verwendet werden kann, um bestimmte Domains zu erlauben, Remote XUL zu laden.
Verschiedene XUL-Änderungen
- Das
readonly
-Attribut funktioniert nun korrekt bei XBL-Feldern. - Das
<xul:resizer>
-Element ermöglicht es Ihnen jetzt, daselement
-Attribut zu spezifizeren, um ein Element zu skalieren, anstatt das Fenster zu skalieren. - Das
<xul:resizer>
-Element hat nun eintype
-Attribut, das es Ihnen ermöglicht, anzugeben, dass der Resizer für ein Fenster anstelle eines Elements ist, um zu verhindern, dass der Fenster-Resizer zweimal gezeichnet wird. - Das
"active"
-Attribut wird nicht mehr auf aktive XUL-Fenster gesetzt. Stattdessen können Sie die neue:-moz-window-inactive
-Pseudoklasse verwenden, um verschiedenen Styles zu Hintergrundfenstern zuzuweisen. - Das
emptytext
-Attribut ist nun veraltet; Sie sollten stattdessenplaceholder
verwenden. - Das
<xul:window>
-Element bietet jetzt einaccelerated
-Attribut; wenn dieses auf wahr gesetzt ist, darf der Hardware-Ebenen-Manager das Fenster beschleunigen. - Das
<xul:stack>
-Element unterstützt nun diebottom
- undright
-Attribute. - Ereignisse werden jetzt während der
<xul:toolbox>
-Anpassung ausgelöst, sodass Sie Änderungen an den Werkzeugleisten erkennen können. - Das
alternatingbackground
-Attribut für<xul:tree>
-Elemente wird nicht mehr unterstützt; Sie können die:-moz-tree-row
-Pseudoklasse stattdessen verwenden. - Der Überlauf-Button in der Lesezeichen-Symbolleiste mit anonymem ID
chevronPopup
ist nicht länger 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 dieses auftrue
gesetzt ist, umfasst das Inhaltsgebiet eines Fensters die Titelleiste, was das Zeichnen in der Titelleiste ermöglicht. - Neue
TabPinned
undTabUnpinned
-Ereignisse sind verfügbar, die es Ihnen ermöglichen, zu erkennen, wann Tabs angeheftet und gelöst werden. - Das neue
TabAttrModified
-Ereignis wird gesendet, wenn sich die Attributelabel
,crop
,busy
,image
oderselected
eines Tabs ändern. <xul:tab>
-Elemente haben jetzt einpinned
-Attribut, mit dem Sie feststellen können, ob ein Tab derzeit angeheftet ist oder nicht.- Die
setDirectionIndicator
-Klasse auf<xul:tree>
-Elementen hat seit einiger Zeit nichts mehr gemacht; jetzt wird sie überhaupt nicht mehr verwendet. - Das
<xul:window>
-Element verfügt jetzt über einchromemargin
-Attribut, mit dem Sie den Abstand zwischen Chrome und Inhalt auf jeder Seite eines Fensters festlegen können; Sie können dies verwenden, um in die Titelleiste zu zeichnen, zum Beispiel. - Das
<xul:window>
-Element hat jetzt eindisablechrome
-Attribut; dieses wird verwendet, um den größten Teil des Chromes in einem Fenster zu verbergen, wenn es verwendet wird, um In-Browser-Benutzeroberflächen anzuzeigen, wieabout:addons
. - Das
<xul:window>
-Element hat jetzt eindisablefastfind
-Attribut, das es Ihnen ermöglicht, die Suchleiste in einem Fenster zu deaktivieren, wenn der Inhalt dies nicht unterstützt. Dies wird z. B. vom Add-ons-Panel verwendet. - Werkzeugleisten können nun außerhalb von Werkzeugkästen sein, während sie immer noch als Mitglied des
<xul:toolbox>
betrachtet werden, indem dietoolboxid
-Eigenschaft des<xul:toolbar>
gesetzt wird. Außerdem hat das<xul:toolbox>
-Element jetzt eineexternalToolbars
-Eigenschaft, die alle Werkzeugleisten auflistet, die als Mitglieder des Werkzeugkastens betrachtet werden. - Unterstützung wurde hinzugefügt, um XUL-Vorlagen für Debugging-Zwecke zu protokollieren.
Benutzeroberflächenänderungen, die Entwickler betreffen
- Die Add-on-Leiste
-
Die Statusleiste wurde zugunsten der neuen Add-on-Leiste entfernt. Wenn Sie in der Vergangenheit UI zur Statusleiste hinzugefügt haben, müssen Sie Ihre Erweiterung aktualisieren, um dies zu nutzen.
- Verbergen von Browser-Chrome
-
Sie können jetzt das Chrome des Browsers verbergen, wenn es wünschenswert ist; zum Beispiel macht
about:addons
dies.
Speicherung
Verschiedene Änderungen an der Speicher-API
- Die
mozIStorageBindingParamsArray
-Schnittstelle hat jetzt ein Längenattribut, das die Anzahl dermozIStorageBindingParams
-Objekte im Array angibt. - Die
mozIStorageStatement.bindParameters()
-Methode gibt jetzt einen Fehler zurück, wenn das angegebenemozIStorageBindingParamsArray
leer ist. - Die
mozIStorageConnection.clone()
-Methode wurde hinzugefügt, die es Ihnen ermöglicht, eine bestehende Datenbankverbindung zu klonen. - Die
mozIStorageConnection.asyncClose()
-Methode wurde hinzugefügt, die es Ihnen erlaubt, eine Datenbankverbindung asynchron zu schließen; Sie geben einen Callback an, der benachrichtigt wird, wenn der Schließvorgang abgeschlossen ist. - Die
mozIStorageConnection.setGrowthIncrement()
-Methode wurde hinzugefügt, die es Ihnen erlaubt, die Menge anzugeben, um die eine Datenbankdatei jeweils wachsen soll, um SQLite dabei zu helfen, Fragmentierung zu reduzieren. - Der
SQLITE_CONSTRAINT
-Fehler wird nun alsNS_ERROR_STORAGE_CONSTRAINT
anstatt alsNS_ERROR_FAILURE
gemeldet.
XPCOM
Zusätzlich zu den unten angeführten spezifischen Änderungen ist es wichtig zu beachten, dass es keine eingefrorenen Schnittstellen mehr gibt. Alle Schnittstellen sind jetzt nicht eingefroren, egal was die Dokumentation sagt. 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 beeinflussen.
- Components.utils.getGlobalForObject()
-
Diese neue Methode gibt das globale Objekt zurück, mit dem ein Objekt assoziiert ist; dies ersetzt einen häufigen Anwendungsfall der jetzt entfernten
__parent__
.
Places
- Places-Abfrageergebnisse können jetzt von mehreren Beobachtern überwacht werden, und Abfragen können asynchron ausgeführt werden. Dies bedeutet, dass es einige Änderungen an den Schnittstellen
nsINavHistoryResult
,nsINavHistoryQueryOptions
undnsINavHistoryContainerResultNode
gibt. Wesentlicher ist jedoch, dass die SchnittstellensINavHistoryResultViewer
innsINavHistoryResultObserver
umbenannt wurde. - Einige neue Benachrichtigungen wurden hinzugefügt, um dem Browser dabei zu helfen, den Herunterfahrungsprozess des Places-Service zuverlässiger zu verfolgen. Von diesen sind die meisten nur für den internen Gebrauch bestimmt, aber die
places-connection-closed
-Benachrichtigung ist verfügbar, um zu wissen, wann der Places-Service seinen Herunterfahrungsprozess abgeschlossen hat. - Der Array-Größenausgabeparameter in mehreren Places-Methoden ist jetzt optional.
- Unterstützung für
<menupopup type="places">
wurde entfernt. Stattdessen müssen Sie ein Menü mit Places-Informationen manuell erstellen und befüllen, anstatt dies erledigen zu lassen. Siehe Anzeigen von Places-Informationen mit Ansichten: Menüansicht für Details.
Schnittstellenänderungen
- Die Schnittstellen
nsIDocShell
undnsIWebBrowser
haben jetzt ein neuesisActive
-Attribut, das verwendet wird, um Optimierungen von Code-Pfaden für Dokumente zu ermöglichen, die derzeit nicht sichtbar sind. - Die
nsIMemory
-MethodensIMemory.isLowMemory()
wurde abgelöst. Sie sollten "Speicherdruck"-Benachrichtigungen verwenden, um auf Situationen mit niedrigem Speicher zu achten. - Die API zur Bearbeitung von Weiterleitungen auf HTTP-Kanälen wurde geändert, um sie asynchron abwickeln zu können. Jeder Code, der die Verarbeitung von Weiterleitungen mit
nsIChannelEventSink.onChannelRedirect()
implementiert, muss aktualisiert werden, umnsIChannelEventSink.asyncOnChannelRedirect()
zu verwenden. Diese akzeptiert einen Callback-Handler, der aufgerufen werden muss, wenn eine Weiterleitung erfolgreich abgeschlossen ist. - Die Methode
nsINavHistoryResultObserver.batching()
wurde hinzugefügt, um eine Möglichkeit zu bieten, Places-Operationen in Chargen zu gruppieren, wodurch die Anzahl der gelieferten Aktualisierungsbenachrichtigungen reduziert wird, was die Leistung verbessern kann, wenn Beobachter relativ aufwendige Aufgaben durchführen (wie das Auffrischen von Ansichten). - Die längst veraltete
nsIPref
-Schnittstelle wurde endlich entfernt. Wenn Sie nicht bereits zunsIPrefService
gewechselt sind, ist jetzt die Zeit dafür. - Die Schnittstellen
nsISessionStore
undnsISessionStartup
erhielten Änderungen, um das Session-Wiederherstellen auf Abruf zu unterstützen. Siehe diensISessionStore.restoreLastSession()
-Methode. - Die Methoden
nsIPrincipal.subsumes()
undnsIPrincipal.checkMayLoad()
, sowie die Attributeorigin
,csp
, undURI
dernsIPrincipal
-Schnittstelle sind jetzt vom Skript aus zugänglich; früher waren sie nur aus nativen Code zugänglich. - Die
nsIPrompt
-Schnittstelle unterstützt jetzt tab-modale Alerts; siehe Verwendung von tab-modalen Prompts für Details. - Die Methode
nsIEffectiveTLDService.getPublicSuffixFromHost()
weist jetzt Hostnamen zurück, die mit einem Punkt (".") beginnen. - Die Methode
mozIJSSubScriptLoader.loadSubScript()
verfügt jetzt über ein optionales Argument, mit dem Sie den Zeichensatz des Skripts angeben können; wenn keiner angegeben wird, wird ASCII angenommen (wie es immer angenommen wurde). - Die Schnittstelle
nsIAccessProxy
wurde entfernt. Es handelte sich um ein Implementierungsdetail, das seine Nützlichkeit überlebt hat. - Die Schnittstellen
nsIContentView
undnsIContentViewManager
wurden für Firefox Mobile hinzugefügt. Sie repräsentieren eine scrollbare Inhaltsansicht, deren Inhalte tatsächlich von einem separaten Prozess gezeichnet werden. - Die Schnittstelle
nsIDiskCacheStreamInternal
wurde hinzugefügt. - Die Schnittstelle
nsIExternalURLHandlerService
wurde hinzugefügt. - Die Schnittstelle
nsISyncJPAKE
wurde hinzugefügt. Siehe Firefox Bug 601645. - Die Schnittstelle
nsIINIParserWriter
wurde in Gecko 1.9.2.4 hinzugefügt, um das Schreiben von INI-Dateien zu unterstützen.
Speicherverwaltung
- Unfehlbare Speicherzuweisung
-
Mozilla bietet jetzt unfehlbare Speicherzuteiler, die garantiert nicht Null zurückgeben. Sie sollten diesen Artikel lesen, um zu erfahren, wie sie funktionieren und wie Sie explizit fallible gegenüber unfehlbarer Speicherzuweisung anfordern.
Andere Änderungen
- Die meisten der Ressourcen, die in Firefox enthalten sind, wurden in ein einziges JAR-Archiv,
omni.jar
, zusammengefasst, was die Startzeit verbessert, indem die E/A-Zugriffe verringert werden. Für Details lesen Sie Über omni.jar. - Die Präferenz
accessibility.disablecache
wird nicht mehr unterstützt; sie wurde nur zu Debugging-Zwecken offengelegt und wird nicht mehr verwendet. - Addons, deren GUID sich von einer Version zur anderen ändert, können jetzt richtig aktualisiert werden.
- Als ein Nebeneffekt der Entfernung von plattformspezifischen Verzeichnissen in Addon-Bundles können Sie keine verschiedenen Standardpräferenzen mehr für jede Plattform bereitstellen.
- Erweiterungen werden standardmäßig nicht mehr entpackt, wenn sie installiert werden, sondern direkt aus der XPI-Datei ausgeführt. Erweiterungen können die unpack-Eigenschaft im Installationsmanifest 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 erstellen SQLite-Datenbank, oder Dinge relativ zum Verzeichnis der Erweiterung aus dem Dateisystem kopieren, müssen möglicherweise auch ihren Code ändern.
- Sie können jetzt Erweiterungen einfügen, die bei jedem Start der Anwendung automatisch installiert werden innerhalb einer benutzerdefinierten Firefox-Distribution.
Andere Änderungen
- Nur die root chrome.manifest-Datei wird geladen
-
Nur die root
chrome.manifest
-Datei wird jetzt geladen; wenn Sie sekundäre Manifestdateien laden 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.
- Ereignisbehandlung von Inhaltsprozessen
-
Um die Unterstützung von out-of-process-Plugins und anderen multiprozessfähigen Funktionen zu ermöglichen, wurde eine neue API eingeführt, um das Senden von Nachrichten über Prozesse hinweg zu unterstützen.
- Bootstrapped Erweiterungen
-
Sie können jetzt Erweiterungen erstellen, die installiert, deinstalliert und aktualisiert (oder downgradiert) werden können, ohne dass ein Neustart des Browsers erforderlich ist.
- Standardplugin entfernt
-
Das Standardplugin wurde entfernt. Der Anwendungsverzeichnis für Plugins wurde standardmäßig ebenfalls entfernt, jedoch bleibt die Unterstützung für die Installation von Plugins über diesen Ordner bestehen. Siehe Firefox Bug 533891.
- Erweiterungs-Manager durch Addon-Manager ersetzt
-
Der
nsIExtensionManager
wurde durch AddonManager ersetzt. - Keine Child-HWNDs mehr verwendet
-
Firefox erstellt keine Child-HWNDs mehr für seine interne Nutzung unter Windows. Wenn Sie eine Erweiterung geschrieben haben, die nativen Code verwendet, um diese HWNDs zu manipulieren, wird Ihre Erweiterung unter Firefox 4 nicht funktionieren. Sie müssen entweder die Verwendung von HWNDs einstellen oder Ihren Code, der auf HWNDs angewiesen ist, in ein NPAPI-Plugin einbinden. Das ist eine Menge Arbeit, daher sollten Sie, wenn Sie vermeiden können, HWNDs direkt zu verwenden.
- Gestenänderungen
-
Die Drei-Finger-Aufwärts- und Abwärtswischgesten auf Trackpads wurden so geändert, dass sie standardmäßig die Firefox Panorama-Anzeige (ehemals TabCandy) öffnen und schließen. Um diese auf die vorherigen Befehle zum Scrollen nach oben und unten zurückzusetzen, öffnen Sie about:config und setzen
browser.gesture.swipe.down
aufcmd_scrollBottom
undbrowser.gesture.swipe.up
aufcmd_scrollTop
.