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. Dieser Artikel bietet Informationen über diese Version und welche Funktionen für Webentwickler, Add-on-Entwickler und Gecko-Plattform-Entwickler verfügbar sind.
Funktionen für Webentwickler
HTML
- Webformularen
-
Ein Überblick über Verbesserungen an Webformularen. Zu diesen Änderungen gehören hinzugefügte Eingabetypen im
<input>
Element, Datenvalidierung und mehr. - HTML5 Sektionen
-
Gecko unterstützt jetzt die neuen HTML5-Elemente, die mit Sektionen 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 für den Benutzer momentan nicht relevant sind.
- Andere HTML5-Elemente
-
Gecko unterstützt jetzt auch folgende neue 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 die in Firefox 4 implementierten WebSockets nicht mit dem finalen Standard kompatibel sind und im Allgemeinen nicht verwendet werden sollten.
Verbesserungen an Canvas
Folgende Änderungen wurden an der CanvasRenderingContext2D
Schnittstelle vorgenommen, um unsere <canvas>
Implementierung näher an die Spezifikation heranzuführen:
- Das Angeben eines negativen Radius beim Aufrufen von
arc()
wirft nun korrekt eineINDEX_SIZE_ERR
Ausnahme. - Das Angeben von nicht-finiten Werten beim Aufrufen von
createLinearGradient()
undcreateRadialGradient()
wirft jetztNOT_SUPPORTED_ERR
anstelle vonSYNTAX_ERR
. - 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 nun die optionalen ParameterdirtyX
,dirtyY
,dirtyWidth
unddirtyHeight
.
Verschiedene HTML-Änderungen
<textarea>
Elemente sind jetzt standardmäßig skalierbar; Sie können dieresize
CSS-Eigenschaft verwenden, um dies zu deaktivieren.canvas.getContext
undcanvas.toDataURL
werfen keine Ausnahme mehr, wenn sie mit nicht erkannten Argumenten aufgerufen werden.- Das
<canvas>
Element unterstützt nun die Mozilla-spezifische MethodemozGetAsFile()
, die es ermöglicht, eine speicherbasierte Datei zu erhalten, die ein Bild des Canvas-Inhalts enthält. Weitere Details sieheHTMLCanvasElement
. Canvas2DContext.lineCap
undCanvas2DContext.lineJoin
werfen keine Ausnahme mehr, wenn sie auf einen nicht erkannten Wert gesetzt werden.Canvas2DContext.globalCompositeOperation
wirft keine Ausnahme mehr bei der Festlegung auf einen nicht erkannten Wert und unterstützt den nicht standardmäßigen Wertdarker
nicht mehr.- Die Unterstützung für das veraltete
<spacer>
Element, das in allen anderen Browsern fehlte, wurde entfernt. - Das
<isindex>
Element, wenn es durch den Aufruf vonDocument.createElement()
erstellt wird, wird jetzt als einfaches Element ohne Eigenschaften oder Methoden erstellt. - Gecko unterstützt jetzt den Aufruf von
click()
auf<input>
Elementen, um den Datei-Auswahldialog zu öffnen. Sehen Sie sich das Beispiel im Artikel Using files from web applications an. - Das
<input>
Element unterstützt ein neuesmozactionhint
Attribut, das es Ihnen ermöglicht, das Label für die Eingabetaste auf virtuellen Tastaturen anzugeben. <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 gleicht das 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 es Ihnen,<length>
Werte als mathematische Ausdrücke zu spezifizieren. - Selektor-Gruppierung
-
Unterstützung für
:-moz-any
zur Gruppierung von Selektoren und zur Faktorisierung von Kombinatoren. - Unterstützung für Hintergrundbild-Unterrechtecke
-
Die
-moz-image-rect()
Funktion ermöglicht es, Teilrechtecke 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.
- Verwenden von beliebigen 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. - Privatsphäre und der :visited Selektor
-
Es wurden Änderungen daran vorgenommen, welche Informationen über den Stil besuchter Links mit Hilfe von CSS-Selektoren gewonnen werden können. Dies kann einige Webanwendungen beeinflussen.
Neue CSS-Eigenschaften
Eigenschaft | Beschreibung |
-moz-font-feature-settings |
Ermöglicht Ihnen, erweiterte Funktionen von OpenType-Schriftarten anzupassen. |
-moz-tab-size |
Geben Sie die Breite in Leerzeichen eines Tab-Zeichens (U+0009) beim Text rendering an. |
resize |
Ermöglicht Ihnen die Steuerung der Dimensionen, in denen ein Element skalierbar ist. |
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 Formularelementen angewendet. |
:-moz-submit-invalid |
Wird auf den Submit-Button von Formularen angewendet, wenn eines oder mehrere der Formularelemente nicht validieren. |
:-moz-window-inactive |
Wird auf Elemente in inaktiven Fenstern angewendet. |
:invalid |
Wird automatisch auf <input> Felder angewendet, wenn
deren Inhalte ungültig sind.
|
:optional |
Wird automatisch auf <input> Felder angewendet,
die das required Attribut nicht spezifizieren.
|
:required |
Wird automatisch auf <input> Felder angewendet,
die das required Attribut spezifizieren.
|
:valid |
Wird automatisch auf <input> Felder angewendet, wenn
deren Inhalte erfolgreich validiert werden.
|
Neue CSS-Pseudoselektoren
Pseudoselektor | Beschreibung |
:-moz-focusring |
Ermöglicht es Ihnen, das Erscheinungsbild eines Elements zu spezifizieren, wenn Gecko glaubt, dass es einen Fokus-Indikator gerendert 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 zu spezifizieren.
|
-moz-element |
Ermöglicht es Ihnen, ein beliebiges Element als Hintergrund für background-image und background zu verwenden.
|
-moz-image-rect |
Ermöglicht es Ihnen, ein Teilrechteck eines Bildes als background-image oder background zu verwenden.
|
Umbenannte CSS-Eigenschaften
Alter Name | Neuer Name | Hinweise |
---|---|---|
-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 Sites zu aktualisieren. Rendering-Änderungen wurden ebenfalls vorgenommen, um die neueste Spezifikation zu erfüllen. |
-moz-box-shadow |
box-shadow |
Verschiedene CSS-Änderungen
- Die
text-shadow
Eigenschaft begrenzt jetzt den Weichzeichnungsradius auf 300px aus Gründen der Vernunft und Leistung. - Die
overflow
Eigenschaft wird nicht mehr auf Tabellengruppen-Elemente (<thead>
,<tbody>
, und<tfoot>
) angewendet. - Die
-moz-appearance
Eigenschaft unterstützt jetzt den Wert-moz-win-borderless-glass
, der ein randloses Aero-Glass-Erscheinungsbild auf ein Element anwendet. - Die
-moz-device-pixel-ratio
Medienfunktion wurde hinzugefügt, die es ermöglicht, das Verhältnis der Gerät-Pixel pro CSS-Pixel in Media Queries zu verwenden. - Geckos Verarbeitung von CSS
<length>
Einheiten wurde überarbeitet, um besser mit anderen Browsern übereinzustimmen und absolute Längen in Bildschirmpixelzählungen basierend auf der DPI des Geräts genauer zu übersetzen.
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 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-Animationen von SVG ist jetzt verfügbar.
- Verwendung von SVG als Bilder und CSS-Hintergründe
-
Sie können jetzt SVG mit dem
<img>
Element verwenden, sowie als CSSbackground-image
. - Unterstützung des Media
buffered
Attributs -
Das
buffered
Attribut auf<video>
und<audio>
Elementen wird jetzt unterstützt, so dass Sie bestimmen können, welche Bereiche einer Mediendatei gepuffert wurden. DieTimeRanges
DOM-Schnittstelle wurde zur Unterstützung dessen implementiert. - Media
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 Positionierung von SVG-Text
-
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 einer Zeichenfolge individuell zu steuern.
DOM
- JavaScript typisierte Arrays
-
Unterstützung für JavaScript typisierte Arrays wurde hinzugefügt; dies ermöglicht es Ihnen, Puffer mit Rohdaten mit nativen Datentypen zu manipulieren. Mehrere APIs nutzen dies, einschließlich der File API, WebGL und WebSockets.
- Abrufen von Grenzrechtecken für Bereiche
-
Das
Range
Objekt verfügt jetzt über die Methodenrange.getClientRects()
undrange.getBoundingClientRect()
. - Erfassung 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 Browserverlaufs
-
Das vorhandene Dokumentverlaufsobjekt, das über das
window.history
Objekt verfügbar ist, unterstützt jetzt die neuen HTML5pushState()
undreplaceState()
Methoden. - Animationen mit MozBeforePaint
-
Ein neues Ereignis wurde hinzugefügt, das in Kombination 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.
DOM-Schnittstellen von HTML-Elementen haben sich geändert
Mehrere HTML-Elemente haben ihre DOM-Schnittstellen auf die durch die HTML5-Spezifikation geforderten geändert, wie unten gezeigt.
Schnittstelle in Firefox 3.6 | Schnittstelle in Firefox 4 | HTML-Elemente |
---|---|---|
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
- Das Umbruchsverhalten 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 jetzt standardmäßig gemäß der HTML5-Spezifikation. Skripte mit demsrc
Attribut werden sobald sie verfügbar sind ausgeführt (ohne die Reihenfolge beizubehalten), und Skripte ohne dassrc
Attribut werden synchron ausgeführt. Um das Skripte mitsrc
Attribut, die eingefügt wurden, in der Reihenfolge der Einfügungen auszuführen, setzen Sie.async=false
auf ihnen.- DOM
File
Objekte bieten jetzt eineurl
Eigenschaft. - FormData Unterstützung für XMLHttpRequest.
- Die
HTMLElement.isContentEditable
Eigenschaft wurde implementiert. - Die
Document.currentScript
Eigenschaft erlaubt es Ihnen, zu bestimmen, welches<script>
Element aktuell ausgeführt wird. Die neuenbeforescriptexecute
undafterscriptexecute
Ereignisse werden vor und nach dem Ausführen eines Skriptelements ausgelöst. - Die
mozSourceNode
Eigenschaft wurde zumDataTransfer
Objekt hinzugefügt. - Die
Selection.modify()
Methode wurde zumSelection
Objekt hinzugefügt; damit können Sie die aktuelle Textauswahl oder die Cursorposition im Browserfenster einfach ändern. - 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 erlaubt es Ihnen zu bestimmen, welche Art von Gerät ein Ereignis generiert hat. - Das
Document
readystatechange
Ereignis wurde implementiert. - Die Methode
Document.createElement()
akzeptiert keine<
und>
um den Tag-Namen im Quirks-Modus mehr. - Die Methoden
Element.setCapture()
undDocument.releaseCapture()
wurden hinzugefügt, um es Elementen zu ermöglichen, Mausereignisse zu verfolgen, auch wenn die Maus sich außerhalb ihres normalen Tracking-Bereichs befindet, nachdem einmousedown
Ereignis aufgetreten ist. - Die
window.mozPaintCount
Eigenschaft wurde hinzugefügt; sie erlaubt es Ihnen, zu bestimmen, wie oft ein Dokument bemalt wurde. Dies kann nützlich sein, wenn Sie die Leistung Ihrer Webanwendung testen. - Der Sprach-Token wurde von
Navigator.appVersion
undNavigator.userAgent
entfernt. Verwenden SieNavigator.language
oder dieAccept-Language
Header stattdessen. Firefox Bug 572656 - Das
XMLHttpRequest
Objekt gibt jetzt die Antwort als JavaScript typisiertes Array sowie als Zeichenfolge aus, mithilfe der Gecko-spezifischenmozResponseArrayBuffer
Eigenschaft. - Mausereignisse enthalten jetzt eine
mozPressure
Eigenschaft, die den Druckgrad auf unterstützten druckempfindlichen Eingabegeräten angibt. - Die Methoden
URL.createObjectURL()
undURL.revokeObjectURL()
ermöglichen es Ihnen, Objekt-URLs zu erstellen, die auf lokale Dateien verweisen. - Die Methode
DOMImplementation.createHTMLDocument()
ermöglicht es Ihnen, ein neues HTML-Dokument zu erstellen. Node.mozMatchesSelector()
wirft jetzt eineSYNTAX_ERR
Ausnahme, wenn der spezifizierte Selektor-String ungültig ist, anstatt fälschlicherweisefalse
zurückzugeben.- Sie können jetzt die Werte der SVG-Eigenschaften eines Elements mit demselben Kurzschrift-Syntax wie bei CSS setzen. Zum Beispiel:
element.style.fill = 'lime'
. Siehestyle
für Details. - Das Dokumentenwurzel hat jetzt ein privates Browsing-Modus Attribut, das den Zustand des privaten Browsing-Modus beschreibt, einschließlich eines Hinweises, ob das private Browsing für die Sitzung vorübergehend oder permanent ist.
- Der zweite Parameter der
window.getComputedStyle()
Methode ist jetzt optional, wie in jedem anderen großen Browser. - Das DOM
StorageEvent
Objekt entspricht jetzt der neuesten Version der Spezifikation. - Die minimale zulässige Verzögerung für die
setTimeout()
undsetTimeout()
Methode ist jetzt eine Präferenz,dom.min_timeout_value
. - Das
MozAfterPaint
Ereignis wird standardmäßig nicht mehr gesendet, aufgrund eines möglichen Sicherheitsproblems. Es kann durch Setzen einer Präferenz wieder aktiviert werden.
Sicherheit
- Content Security Policy (CSP)
-
Content Security Policy (CSP) ist ein von Mozilla vorgeschlagener Standard, der Webdesignern und Serveradministratoren helfen soll, 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 es einer Website ermöglicht, dem Browser mitzuteilen, dass sie nur über HTTPS und nicht über HTTP kommunizieren sollte.
- Der X-FRAME-OPTIONS Antwort-Header
-
Der in Internet Explorer 8 eingeführte X-FRAME-OPTIONS HTTP-Antwort-Header wird jetzt von Firefox unterstützt. Dies ermöglicht es Sites anzugeben, ob ihre Seiten in Frames verwendet werden können und, falls ja, ob dies auf die gleiche Herkunft beschränkt werden sollte.
- User Agent String Änderungen
-
Um die Menge der in HTTP-Anfragen gesendeten Daten und Entropie zu reduzieren (siehe Firefox Bug 572650), wurden der Kryptostärkentoken und die Sprach-Token aus dem User Agent-String entfernt.
JavaScript
Eine Übersicht über die in JavaScript 1.8.5 implementierten Änderungen finden Sie unter Neu in JavaScript 1.8.5. JavaScript in Firefox 4 wird die ECMAScript 5-Standarddokumente weiter einhalten.
Entwicklerwerkzeuge
- Verwendung der Web Console
-
Das Web Console Tool ist ein nützliches Debugging-Tool für Webentwickler und Erweiterungsentwickler gleichermaßen.
Hinweis:
Ab Gecko 2.0 ist die Fehlerkonsole standardmäßig deaktiviert. Sie können sie wieder aktivieren, indem Sie die Präferenz 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 unterbrechen, daher sollten Sie diesen Artikel auf jeden Fall lesen.
Wenn Sie ein Theme-Entwickler sind, sollten Sie Theme-Änderungen in Firefox 4 lesen, um einige kritische Änderungen zu verstehen, auf die Sie achten müssen.
JavaScript-Code-Module
- Services.jsm
-
Das
Services.jsm
Code-Modul bietet Getter, die es einfach machen, Referenzen auf häufig verwendete Dienste zu erhalten, wie zum Beispiel den Präferenzdienst oder den Fenstervermittler und andere. - JS-ctypes API
-
Die JS-ctypes API ermöglicht es, C-kompatible fremde Bibliotheksfunktionen aufzurufen, ohne XPCOM zu verwenden.
- Add-ons-Manager
-
Der neue Add-ons-Manager bietet Informationen über installierte Add-ons, Unterstützung für deren Verwaltung und bietet Möglichkeiten zum Installieren und Entfernen von Add-ons.
- PopupNotifications.jsm
-
Das neue Popup-Benachrichtigungsmodul macht es einfach, attraktive, nicht modale Benachrichtigungen für den Benutzer zu präsentieren. Sehen Sie, wie Sie diese API in Verwendung von Popup-Benachrichtigungen verwenden.
- 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 stellt die globale VariablegDownloadLastDir
bereit, die einen String 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 Browsen für Sie. - Leistungsmessung mit dem PerfMeasurement.jsm Code-Modul
-
Das
PerfMeasurement.jsm
Code-Modul bietet eine API, um CPU-Leistungsdaten im JavaScript-Code zu messen.
Verschiedene Änderungen an Code-Modulen
- Das
NetUtil.jsm
Code-Modul bietet jetzt die MethodereadInputStreamToString()
, die es Ihnen ermöglicht, beliebige Bytes aus einem Stream in einen String zu lesen, selbst wenn der Stream Nullen enthält. - Das XPCOMUtils.jsm Code-Modul bietet jetzt IterSimpleEnumerator() und IterStringEnumerator() Hilfsfunktionen zum Iterieren über XPCOM-Enumeratoren.
- Sie können jetzt Workers in JavaScript-Code-Modulen verwenden.
DOM-Änderungen
ChromeWorker
-
Ein neuer Arbeitertyp für privilegierten Code; dies ermöglicht es Ihnen, Dinge wie js-ctypes von Workern 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 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 irgendwelche Skripte darauf ausgeführt werden.
XUL
Änderungen am tabbrowser-Element
Mehrere Änderungen wurden am <xul:tabbrowser>
Element vorgenommen, die Erweiterungen beeinflussen, die mit Tabs interagieren. Neben der Unterstützung von App-Tabs ändern diese Änderungen auch die Tab-Leiste in eine Standard-Werkzeugleiste, die es dem Benutzer ermöglicht, Schaltflächen hinein zu ziehen.
- Die
TabClose
,TabSelect
undTabOpen
Ereignisse sprudeln nicht mehr zum<xul:tabbrowser>
Element (gBrowser
). Ereignis-Listener für diese Ereignisse sollten demgBrowser.tabContainer
hinzugefügt werden, statt direkt demgBrowser
. - Das Tab-Kontextmenü ist kein anonymes Kind des
<xul:tabbrowser>
mehr. Es kann daher direkt mit XUL-Overlays überlagert werden. Es kann auch direkter in JavaScript übergBrowser.tabContextMenu
erreicht werden. Siehe diesen Blogeintrag für mehr Details. - Die neue
visibleTabs
Eigenschaft wurde hinzugefügt, um Ihnen ein Array der aktuell sichtbaren Tabs zu geben; dies ermöglicht es, zu bestimmen, welche Tabs im aktuellen Tab-Set sichtbar sind. Dies wird beispielsweise von Firefox Panorama 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, ein Tab-Favicon zu erhalten, ohne auf das<xul:browser>
Element zurückgreifen zu müssen. - Die neue Eigenschaft
tabbrowser.tabs
wurde hinzugefügt, die es ermöglicht, einfach eine Liste der Tabs in einem<xul:tabbrowser>
Element zu erhalten. - Die neuen Methoden
pinTab
undunpinTab
ermöglichen es Ihnen, Tabs zu pinnen und zu entpinnen (das heißt, sie zwischen App-Tabs und regulären Tabs umzuschalten). - Die Methode
getTabModalPromptBox
und das AttributtabModalPromptShowing
wurden zum<xul:tabbrowser>
hinzugefügt, um tab-modale Benachrichtigungen zu unterstützen.
Änderungen an Popups
- Das
<xul:popup>
Element wird nicht mehr unterstützt; Sie sollten<xul:menupopup>
stattdessen verwenden. (Wenn Sie weiterhinpopup
verwenden, werden Sie auf Störungen stoßen, da das Element keine besondere Bedeutung mehr hat. Beispielsweise kann<xul:menuseparator>
transparent erscheinen, wenn es in einem<xul:popup>
verwendet wird.) - Das
<xul:menupopup>
XUL-Element hat jetzt einetriggerNode
Eigenschaft, die den Knoten angibt, auf dem das Ereignis stattgefunden hat, das das Popup geöffnet hat. Dies erforderte auch die Hinzufügung eines Triggerereignisparameters zuropenPopup
Methode. Auch dieanchorNode
Eigenschaft wurde hinzugefügt; es gibt den Anker zurück, der beim Erstellen des Popups angegeben wurde. - Das
<xul:panel>
Element bietet jetzt diefade
undflip
Attribute, die verwendet werden, um das Verhalten neuer "Pfeil"-Stil Benachrichtigungspanels zu konfigurieren.
Entfernung des Remote-XUL-Supports
Remote XUL wird nicht mehr unterstützt; dies betrifft XUL-Dokumente, die über HTTP bereitgestellt werden; Sie können auch keine XUL-Dokumente 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 bestimmten Domains das Laden von Remote-XUL zu ermöglichen.
Verschiedene XUL-Änderungen
- Das
readonly
Attribut funktioniert jetzt korrekt für XBL-Felder. - Das
<xul:resizer>
Element ermöglicht es Ihnen jetzt, daselement
Attribut zu verwenden, um ein zu skalierendes Element anzugeben, anstatt das gesamte Fenster zu skalieren. - Das
<xul:resizer>
Element hat jetzt eintype
Attribut, das es Ihnen ermöglicht anzugeben, dass der Resizer für ein Fenster statt für ein Element ist, um zu verhindern, dass der Fensterresizer 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 unterschiedliche Stile für Hintergrundfenster festzulegen. - Das
emptytext
Attribut ist jetzt veraltet; Sie solltenplaceholder
stattdessen verwenden. - Das
<xul:window>
Element bietet jetzt einaccelerated
Attribut; wenn dies wahr ist, ist der Hardware-Ebenen-Manager erlaubt, das Fenster zu beschleunigen. - Das
<xul:stack>
Element unterstützt jetzt diebottom
undright
Attribute. - Ereignisse werden jetzt während der
<xul:toolbox>
Anpassung ausgelöst, sodass Sie Änderungen an Werkzeugleisten erkennen können. - Das
alternatingbackground
Attribut für<xul:tree>
Element wird nicht mehr unterstützt; Sie können die:-moz-tree-row
Pseudoklasse stattdessen verwenden. - Der Überlauf-Button der Lesezeichen-Symbolleiste mit anonid 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 wurde). - XUL
<xul:window>
Elemente haben jetzt dasdrawintitlebar
Attribut; wenn dies wahr ist, enthält der Inhaltsbereich des Fensters die Titelleiste, sodass in die Titelleiste gezeichnet werden kann. - Neue
TabPinned
undTabUnpinned
Ereignisse sind verfügbar, die es Ihnen ermöglichen, zu erkennen, wann Tabs angepinnt und entpinnt 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, das es Ihnen ermöglicht zu bestimmen, ob ein Tab derzeit angepinnt ist.- Die
setDirectionIndicator
Klasse auf<xul:tree>
Elementen hat schon seit geraumer Zeit nichts mehr gemacht; jetzt wird sie überhaupt nicht mehr verwendet. - Das
<xul:window>
Element hat jetzt einchromemargin
Attribut, das es Ihnen ermöglicht, den Abstand zwischen Chrome und Inhalt auf jeder Seite eines Fensters zu setzen; Sie können dies verwenden, um in die Fenstertitelleiste zu zeichnen, zum Beispiel. - Das
<xul:window>
Element hat jetzt eindisablechrome
Attribut; dies wird verwendet, um das meiste des Chromes in einem Fenster auszublenden, wenn es dazu verwendet wird, browserinterne 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 sie nicht unterstützt. Dies wird zum Beispiel vom Add-ons-Panel verwendet. - Werkzeugleisten können jetzt außerhalb von Werkzeugleistenkästen sein, während sie immer noch als Mitglied der
<xul:toolbox>
betrachtet werden, indem Sie dietoolboxid
Eigenschaft des<xul:toolbar>
setzen. Auch das<xul:toolbox>
Element hat jetzt eineexternalToolbars
Eigenschaft, die alle Werkzeugleisten auflistet, die als Mitglieder des Werkzeugkasten betrachtet werden. - Unterstützung wurde zur Protokollierung von XUL-Vorlagen zu Debugging-Zwecken 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, wenn Sie in der Vergangenheit Benutzeroberflächen-Elemente zur Statusleiste hinzugefügt haben.
- Chrome des Browsers ausblenden
-
Sie können jetzt das Chrome des Browsers ausblenden, 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, mit der Sie eine bestehende Datenbankverbindung klonen können. - Die
mozIStorageConnection.asyncClose()
Methode wurde hinzugefügt, mit der Sie eine Datenbankverbindung asynchron schließen können; Sie geben einen Rückruf an, um benachrichtigt zu werden, wenn die Schließung abgeschlossen ist. - Die
mozIStorageConnection.setGrowthIncrement()
Methode wurde hinzugefügt, die es Ihnen ermöglicht, die Größe anzugeben, um die eine Datenbankdatei gleichzeitig vergrößert wird, um SQLite zu helfen, Fragmentierung zu reduzieren. - Der
SQLITE_CONSTRAINT
Fehler wird jetzt alsNS_ERROR_STORAGE_CONSTRAINT
und nicht mehr alsNS_ERROR_FAILURE
gemeldet.
XPCOM
Zusätzlich zu den spezifischen Änderungen, die unten aufgeführt sind, ist es wichtig zu beachten, dass es keine gefrorenen Schnittstellen mehr gibt. Alle Schnittstellen sind jetzt ungefroren, unabhängig davon, was in der Dokumentation steht. Wir werden die Dokumentation im Laufe der Zeit aktualisieren.
- XPCOM-Änderungen in Gecko 2.0
-
Details zu Änderungen an XPCOM, die Einfluss auf die Kompatibilität in Firefox 4 haben.
- Components.utils.getGlobalForObject()
-
Diese neue Methode gibt das globale Objekt zurück, mit dem ein Objekt verknüpft ist; dies ersetzt einen häufigen Anwendungsfall des nun 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
nsINavHistoryResult
,nsINavHistoryQueryOptions
undnsINavHistoryContainerResultNode
Schnittstellen gegeben hat. Wesentlicher ist jedoch, dass diensINavHistoryResultViewer
Schnittstelle innsINavHistoryResultObserver
umbenannt wurde. - Einige neue Benachrichtigungen wurden hinzugefügt, um es dem Browser zu ermöglichen, den Herunterfahrprozess des Places-Dienstes zuverlässiger zu verfolgen. Die meisten davon sind nur zur internen Verwendung bestimmt, aber die
places-connection-closed
Benachrichtigung ist verfügbar, um zu wissen, wann der Places-Dienst seinen Herunterfahrprozess abgeschlossen hat. - Der Arraysgrößen-Ausgabeparameter bei 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 füllen, anstatt es für Sie erledigen zu lassen. Siehe Anzeigen von Places-Informationen mit Ansichten: Menüansicht für Details.
Schnittstellenänderungen
- Die
nsIDocShell
undnsIWebBrowser
Schnittstellen haben nun ein neuesisActive
Attribut, das verwendet wird, um Codepfade für Dokumente zu optimieren, die derzeit nicht sichtbar sind. - Die
nsIMemory
MethodensIMemory.isLowMemory()
wurde veraltet. Sie sollten "memory-pressure" Benachrichtigungen verwenden, um auf Situationen mit niedrigem Speicherverbrauch zu achten. - Die API zur Behandlung von Umleitungen auf HTTP-Kanäle hat sich geändert, um sie asynchron verarbeiten zu können. Jeder Code, der die Umleitungshandhabung mit
nsIChannelEventSink.onChannelRedirect()
implementiert, muss aufnsIChannelEventSink.asyncOnChannelRedirect()
aktualisiert werden. Dies akzeptiert einen Rückruf-Handler, der aufgerufen werden muss, wenn eine Umleitung erfolgreich abgeschlossen ist. - Die Methode
nsINavHistoryResultObserver.batching()
wurde hinzugefügt, die eine Möglichkeit bietet, Places-Operationen in Chargen zu gruppieren, wodurch die Anzahl der bereitgestellten Aktualisierungsbenachrichtigungen reduziert wird, was die Leistung verbessern kann, wenn Beobachter relativ aufwendige Aufgaben ausführen (wie das Aktualisieren von Ansichten). - Die längst veraltete
nsIPref
Schnittstelle wurde endlich entfernt. Wenn Sie noch nicht aufnsIPrefService
umgestiegen sind, ist jetzt die Zeit dafür. - Die
nsISessionStore
undnsISessionStartup
Schnittstellen wurden geändert, um die sitzungsbezogene Wiederherstellung auf Anfrage zu unterstützen. Siehe diensISessionStore.restoreLastSession()
Methode. - Die
nsIPrincipal
MethodennsIPrincipal.subsumes()
undnsIPrincipal.checkMayLoad()
, sowie ihreorigin
,csp
undURI
Attribute sind jetzt von Skripten aus zugänglich; zuvor waren sie nur von nativen Code aus zugänglich. - Die
nsIPrompt
Schnittstelle unterstützt jetzt tab-modale Benachrichtigungen; siehe Verwenden von tab-modalen Benachrichtigungen für Details. - Die
nsIEffectiveTLDService.getPublicSuffixFromHost()
Methode lehnt jetzt korrekt Hostnamen ab, die mit einem Punkt (".") beginen. - Die
mozIJSSubScriptLoader.loadSubScript()
Methode hat jetzt ein optionales Argument, mit dem Sie die Zeichencodierung des Skriptes angeben können; wenn keine angegeben wird, wird ASCII angenommen (wie es immer der Fall war). - Die
nsIAccessProxy
Schnittstelle wurde entfernt. Sie war ein implementierungsbedingtes Detail, das seinen Zweck überlebt hat. - Die
nsIContentView
undnsIContentViewManager
Schnittstellen wurden für Firefox Mobile hinzugefügt. Sie repräsentieren eine scrollbar Inhaltsansicht, deren Inhalte tatsächlich von einem separaten Prozess gezeichnet werden. - Die
nsIDiskCacheStreamInternal
Schnittstelle wurde hinzugefügt. - Die
nsIExternalURLHandlerService
Schnittstelle wurde hinzugefügt. - Die
nsISyncJPAKE
Schnittstelle wurde hinzugefügt. Siehe Firefox Bug 601645. - Die
nsIINIParserWriter
Schnittstelle wurde in Gecko 1.9.2.4 hinzugefügt, um das Schreiben in INI-Dateien zu unterstützen.
Speicherverwaltung
- Unfehlbare Speicherzuweisung
-
Mozilla bietet jetzt unfehlbare Speicherzuweiser, die garantiert keinen Null zurückgeben. Sie sollten diesen Artikel lesen, um zu erfahren, wie sie funktionieren und wie Sie explizit fehlbare gegenüber unfehlbaren Speicherzuweisungen anfordern können.
Weitere Änderungen
- Der Großteil der in Firefox enthaltenen Ressourcen wurde in ein einzelnes JAR-Archiv,
omni.jar
, zusammengefasst, was die Startleistung verbessert, indem E/A reduziert wird. Details finden Sie unter Über omni.jar. - Die
accessibility.disablecache
Präferenz wird nicht mehr unterstützt; sie wurde nur für Debugging-Zwecke bereitgestellt und wird nicht mehr verwendet. - Addons, deren GUID sich von einer Version zur anderen ändert, können jetzt ordnungsgemäß aktualisiert werden.
- Als Nebeneffekt der Entfernung plattformspezifischer Verzeichnisse in Add-on-Bundles können Sie keine unterschiedlichen Standardvorgaben mehr für jede Plattform bereitstellen.
- Standardmäßig werden Erweiterungen nach der Installation nicht mehr entpackt, 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ärkomponenten verwenden, DLLs laden mithilfe von js-ctypes, Suchplugins, Wörterbücher und Fenstersymbole müssen spezifizieren, dass sie entpackt werden müssen. Erweiterungen, die SQLite-Datenbanken erstellen oder Dinge relativ zum Extension-Verzeichnis vom Dateisystem kopieren, müssen möglicherweise auch ihren Code ändern.
- Sie können jetzt Erweiterungen einfügen, die automatisch beim Start des Programms installiert werden innerhalb eines angepassten Firefox.
Weitere Änderungen
- Nur die Wurzel chrome.manifest Datei wird geladen
-
Nur die Wurzel
chrome.manifest
Datei wird jetzt geladen; wenn Sie benötigen, dass sekundäre Manifestdateien geladen werden, können Sie denmanifest
Befehl in Ihrer Wurzelchrome.manifest
verwenden, um sie zu laden. - Gopher-Unterstützung entfernt
-
Das Gopher-Protokoll wird nicht mehr nativ unterstützt. Die Unterstützung kann weiterhin über die OverbiteFF Erweiterung hinzugefügt werden.
- Inhaltsprozesseignishandhabung
-
Um Out-of-Process-Plugins und andere Mehrprozessfunktionen zu unterstützen, wurde eine neue API eingeführt, um das Senden von Nachrichten über Prozesse hinweg zu unterstützen.
- Bootstrap-Erweiterungen
-
Sie können jetzt Erweiterungen erstellen, die installiert, deinstalliert und aktualisiert (oder herabgestuft) werden können, ohne einen Browserneustart zu erfordern.
- Standard-Plugin entfernt
-
Das Standard-Plugin wurde entfernt. Der Anwendungs-Plugins-Ordner wurde auch standardmäßig entfernt, jedoch existiert die Unterstützung für Plugins über diesen Ordner zu installieren weiterhin. Siehe Firefox Bug 533891.
- Erweiterungsmanager ersetzt durch Addon-Manager
-
nsIExtensionManager
wurde durch AddonManager ersetzt. - Keine HWNDs für Kindprozesse mehr unter Windows verwendet
-
Firefox erstellt keine HWNDs mehr für Kindprozesse zu internen Zwecken unter Windows. Wenn Sie eine Erweiterung geschrieben haben, die nativen Code verwendet, um diese HWNDs zu manipulieren, funktioniert Ihre Erweiterung nicht unter Firefox 4. Sie müssen entweder die Verwendung von HWNDs vermeiden oder Ihren Code, der sich auf HWNDs verlässt, in ein NPAPI Plug-in einpacken. Da das viel Arbeit macht, sollten Sie, wenn möglich, die direkte Verwendung von HWNDs vermeiden.
- Gesten-Änderungen
-
Die Drei-Finger-Auf- und Abwärtswischgesten auf Trackpads wurden standardmäßig geändert, um die Firefox Panorama-Ansicht (ehemals TabCandy) zu öffnen und zu schließen. Um dies auf die vorherigen Scrollen auf Oben- und Unten-Kommandos zurückzusetzen, öffnen Sie about:config und setzen
browser.gesture.swipe.down
aufcmd_scrollBottom
undbrowser.gesture.swipe.up
aufcmd_scrollTop
.