Firefox 4 für Entwickler
Firefox 4, das 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-Plattform-Entwickler verfügbar sind.
Funktionen für Webentwickler
HTML
- Webformulare
-
Ein Überblick über Verbesserungen an Webformularen. Zu diesen Änderungen gehören neue Eingabetypen im
<input>
-Element, Datenvalidierung und mehr. - HTML5-Sektionen
-
Gecko unterstützt jetzt die neuen HTML5-Elemente, die sich auf Abschnitte in einem Dokument beziehen:
<article>
,<section>
,<nav>
,<aside>
,<hgroup>
,<header>
und<footer>
. -
Dieses Attribut, das für alle Elemente gebräuchlich ist, wird verwendet, um Inhalte auf einer Webseite auszublenden, die dem Benutzer momentan 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 sie in Firefox 4 implementiert sind, nicht mit dem endgültigen Standard kompatibel sind und nicht generell verwendet werden sollten.
Canvas-Verbesserungen
Folgende Änderungen wurden an der CanvasRenderingContext2D
-Schnittstelle vorgenommen, um unsere <canvas>
-Implementierung besser an die Spezifikation anzupassen:
- Die Angabe eines negativen Radius beim Aufrufen von
arc()
löst jetzt korrekt eineINDEX_SIZE_ERR
-Ausnahme aus. - Die Angabe von nicht-finiten Werten beim Aufrufen von
createLinearGradient()
undcreateRadialGradient()
löst jetztNOT_SUPPORTED_ERR
anstelle vonSYNTAX_ERR
aus. - Das Setzen von
miterLimit
auf einen negativen Wert löst keine Ausnahme mehr aus; stattdessen werden nicht-positive Werte ordnungsgemäß ignoriert. - Das Setzen von
lineWidth
auf einen negativen Wert löst keine Ausnahme mehr aus; stattdessen werden nicht-positive Werte ordnungsgemäß ignoriert. - Die Methode
putImageData()
unterstützt jetzt die optionalen ParameterdirtyX
,dirtyY
,dirtyWidth
unddirtyHeight
.
Verschiedene HTML-Änderungen
<textarea>
-Elemente sind nun standardmäßig skalierbar; Sie können die CSS-Eigenschaftresize
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 jetzt die Mozilla-spezifische MethodemozGetAsFile()
, mit der Sie eine speicherbasierte Datei erstellen können, die ein Bild der Canvas-Inhalte enthält. SieheHTMLCanvasElement
für Details. Canvas2DContext.lineCap
undCanvas2DContext.lineJoin
werfen keine Ausnahme mehr, wenn sie auf einen nicht erkannten Wert gesetzt werden.Canvas2DContext.globalCompositeOperation
wirft keine Ausnahme mehr, wenn es 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 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 Dateiauswahldialog zu öffnen. Siehe das Beispiel im Artikel Using files from web applications. - Das
<input>
-Element unterstützt jetzt ein neuesmozactionhint
-Attribut, das es Ihnen ermöglicht, die Bezeichnung 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 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 anzugeben. - Selektor-Gruppierung
-
Unterstützung für
:-moz-any
zur Gruppierung von Selektoren und zum Faktor von Kombinatoren. - Unterstützung für Teilrechteck der Hintergrundbilder
-
Die Funktion
-moz-image-rect()
ermöglicht es, Teilrechtecke von Bildern alsbackground-image
zu verwenden. - CSS-Touch-Eigenschaften
-
Unterstützung für Touch-Eigenschaften wurde hinzugefügt. Details und tatsächliche Artikelnamen folgen später.
- Verwendung beliebiger Elemente als CSS-Hintergründe
-
Sie können die CSS-Funktion
-moz-element
und die DOM-Funktiondocument.mozSetImageElement()
verwenden, um beliebige HTML-Elemente als Hintergründe zu verwenden. - Datenschutz und der :visited-Selektor
-
Es wurden Änderungen daran vorgenommen, welche Informationen über den Stil besuchter Links mit CSS-Selektoren abgerufen werden können. Dies könnte sich auf einige Webanwendungen auswirken.
Neue CSS-Eigenschaften
Eigenschaft | Beschreibung |
-moz-font-feature-settings |
Ermöglicht es Ihnen, erweiterte Funktionen von OpenType-Schriften anzupassen. |
-moz-tab-size |
Gibt die Breite in Leerzeichen an, die ein Tab-Zeichen (U+0009) beim Rendern von Text einnimmt. |
resize |
Ermöglicht es Ihnen, die Dimensionen zu steuern, in denen ein Element geändert werden darf. |
Neue CSS-Pseudoklassen
Pseudoklasse | Beschreibung |
:-moz-handler-crashed |
Wird verwendet, um Elemente zu gestalten, deren Plugins abgestürzt sind. |
:-moz-placeholder |
Wird auf Platzhaltertext in Formularelementen angewendet. |
:-moz-submit-invalid |
Wird auf den Absenden-Button in Formularen angewendet, wenn eines oder mehrere Felder des Formulars nicht validiert werden. |
:-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 das required -Attribut spezifizieren.
|
:required |
Wird automatisch auf <input> -Felder angewendet, die
das required -Attribut spezifizieren.
|
:valid |
Wird automatisch auf <input> -Felder angewendet, wenn
deren Inhalt erfolgreich validiert wird.
|
Neue CSS-Pseudoselektoren
Pseudoselektor | Beschreibung |
:-moz-focusring |
Ermöglicht es Ihnen, das Aussehen eines Elements zu definieren, wenn Gecko glaubt, dass eine Fokusanzeige gerendert werden sollte. |
Neue CSS-Funktionen
Funktion | Beschreibung |
:-moz-any |
Ermöglicht es Ihnen, Selektoren zu gruppieren und Kombinatoren zu faktorieren. |
-moz-calc |
Ermöglicht es Ihnen, <length> -Werte als
mathematische Ausdrücke anzugeben.
|
-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 | 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. Rendering-Änderungen wurden auch vorgenommen, um der aktuellen Spezifikation zu entsprechen. |
-moz-box-shadow |
box-shadow |
Verschiedene CSS-Änderungen
- Die
text-shadow
-Eigenschaft begrenzt die Weichzeichnungsradius auf 300px, um Vernunft und Performance zu sichern. - Die
overflow
-Eigenschaft gilt nicht mehr für Tabellen-Gruppenelemente (<thead>
,<tbody>
, und<tfoot>
). - Die
-moz-appearance
-Eigenschaft unterstützt nun den Wert-moz-win-borderless-glass
, der einem Element ein rahmenloses Aero-Glass-Aussehen verleiht. - Die
-moz-device-pixel-ratio
-Medienfunktion wurde hinzugefügt, wodurch das Verhältnis der Geräte-Pixel pro CSS-Pixel in Media Queries verwendet werden kann. - Geckos Handhabung von CSS
<length>
-Einheiten wurde überarbeitet, um besser mit anderen Browsern übereinzustimmen und absolute Längen genauer in Bildschirmpixel ganzzahlenbasiert 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 die Grafik- und Videoleistung in Firefox 4 optimal zu nutzen.
- 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 die SMIL-Animation von SVG ist jetzt verfügbar.
- Verwendung von SVG als Bilder und als CSS-Hintergründe
-
Sie können nun SVG mit dem
<img>
-Element sowie einem CSS-background-image
verwenden. - Unterstützung für das
buffered
-Attribut in Medien -
Das
buffered
-Attribut auf<video>
und<audio>
-Elementen wird nun unterstützt, sodass Sie bestimmen 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 bei der SVG-Textpositionierung
-
Sie können nun Listen für die Werte der
x
,y
,dx
unddy
-Eigenschaften auf SVG<text>
- und<tspan>
-Elementen angeben. Dies ermöglicht die individuelle Steuerung der Positionierung jedes Zeichens in einer Zeichenfolge.
DOM
- JavaScript-Typ-Arrays
-
Unterstützung für JavaScript-Typ-Arrays wurde hinzugefügt; dies ermöglicht Ihnen das Manipulieren von Puffern mit Rohdaten unter Verwendung nativer Datentypen. Mehrere APIs nutzen dies, einschließlich der File API, WebGL und WebSockets.
- Abrufen von Begrenzungsrechtecken für Bereiche
-
Das
Range
-Objekt hat jetzt die Methodenrange.getClientRects()
undrange.getBoundingClientRect()
. - Erfassen von Mausereignissen an beliebigen Elementen
-
Die Unterstützung für die ursprünglich in Internet Explorer eingeführten
setCapture()
undreleaseCapture()
APIs wurde hinzugefügt. Siehe Firefox bug 503943. - Manipulation der Browser-Historie
-
Das bestehende Dokumenthistorieobjekt, das über das
window.history
-Objekt verfügbar ist, unterstützt jetzt die neuen HTML5-MethodenpushState()
undreplaceState()
. - Animationen mit MozBeforePaint
-
Ein neues Ereignis wurde hinzugefügt, das zusammen mit der Methode
window.mozRequestAnimationFrame()
und der Eigenschaftwindow.mozAnimationStartTime
eine Möglichkeit bietet, synchronisierte Animationen zu erstellen. - Touch- und Mehrfachtouch-Ereignisse
-
Unterstützung für Touch- und Mehrfachtouch-Ereignisse wurde hinzugefügt.
Änderungen der DOM-Schnittstellen von HTMLelementen
Mehrere HTML-Elemente haben ihre DOM-Schnittstellen auf diejenigen geändert, die durch die HTML5-Spezifikation erforderlich sind, 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 Wrapping eines
<textarea>
-Elements kann nun ü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 so schnell wie möglich ausgeführt (ohne die Reihenfolge beizubehalten), und Skripte ohnesrc
-Attribut werden synchron ausgeführt. Um eingefügte Skripte zu erzwingen, die dassrc
-Attribut aufweisen, um der Einfügereihenfolge nach 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 ermöglicht es Ihnen zu bestimmen, welches<script>
-Element-Skript gerade ausgeführt wird. Neuebeforescriptexecute
undafterscriptexecute
Ereignisse werden vor und nach der Ausführung eines Skriptelements ausgelöst. - Die
mozSourceNode
-Eigenschaft wurde zumDataTransfer
-Objekt hinzugefügt. - Die
Selection.modify()
-Methode wurde zumSelection
-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 den DOM-Benutzeroberfläche-Ereignissen hinzugefügt; diese nicht standardisierte Eigenschaft lässt Sie den Typ des Geräts bestimmen, das ein Ereignis erzeugt 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, um es Elementen zu erlauben, Mausereignisse weiter zu verfolgen, selbst wenn die Maus außerhalb ihres normalen Verfolgungsbereichs ist, nachdem einmousedown
-Ereignis aufgetreten ist. - Die
window.mozPaintCount
Eigenschaft wurde hinzugefügt; es ermöglicht Ihnen zu bestimmen, wie oft ein Dokument gezeichnet wurde. Dies kann nützlich sein, wenn Sie die Leistung Ihrer Webanwendung testen. - Das Sprachtoken wurde aus
Navigator.appVersion
undNavigator.userAgent
entfernt. Verwenden Sie stattdessenNavigator.language
oder denAccept-Language
-Header. Firefox bug 572656 - Das
XMLHttpRequest
-Objekt stellt jetzt die Antwort sowohl als JavaScript-Typ-Array als auch als Zeichenkette zur Verfügung, unter Verwendung der speziell in Gecko vorhandenenmozResponseArrayBuffer
-Eigenschaft. - Mausereignisse enthalten jetzt eine
mozPressure
-Eigenschaft, die den Druck auf unterstützten druckempfindlichen Eingabegeräten anzeigt. - 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 die angegebene Selektorzeichenfolge ungültig ist, anstelle fälschlicherweisefalse
zurückzugeben.- Sie können jetzt die Werte von SVG-Eigenschaften eines Elements mit dem gleichen Kurzformatsyntax wie bei CSS setzen. Zum Beispiel:
element.style.fill = 'lime'
. Siehestyle
für Details. - Das Dokumentwurzelelement hat jetzt ein
privatebrowsingmode
-Attribut, das den Status des privaten Surfmodus beschreibt, einschließlich eines Hinweises, ob das private Surfen für die Sitzung temporär oder dauerhaft ist. - Der zweite Parameter der Methode
window.getComputedStyle()
ist jetzt optional, wie es in jedem anderen bedeutenden Browser 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 Einstellung,dom.min_timeout_value
. - Das
MozAfterPaint
-Ereignis wird standardmäßig nicht mehr gesendet, aufgrund eines möglichen Sicherheitsproblems. Es kann durch das Setzen einer Einstellung erneut aktiviert werden.
Sicherheit
- Content Security Policy (CSP)
-
Content Security Policy (CSP) ist ein von Mozilla vorgeschlagenes Konzept, das Webdesignern und Serveradministratoren helfen soll, wie Inhalte auf ihren Websites interagieren. Das Ziel ist es, Angriffe zu erkennen und zu mildern, darunter Cross-Site-Scripting- und Dateninjektionsangriffe.
- HTTP Strict Transport Security
-
HTTP Strict Transport Security ist eine Sicherheitsfunktion, die es einer Website ermöglicht, Browser anzuweisen, dass sie nur über HTTPS kommunizieren sollen, anstatt über HTTP.
- Der X-FRAME-OPTIONS Antwortkopfzeile
-
Die X-FRAME-OPTIONS HTTP-Antwortkopfzeile, die in Internet Explorer 8 eingeführt wurde, wird jetzt von Firefox unterstützt. Dies ermöglicht es Websites anzuzeigen, ob ihre Seiten in Frames verwendet werden können oder nicht, und falls ja, ob dies auf den gleichen Ursprung beschränkt wird.
- Änderungen der User-Agent-Zeichenfolge
-
Als Mittel zur Reduzierung der Menge der in HTTP-Anfragen gesendeten Daten und Entropie (siehe Firefox bug 572650) wurden die Cryptostärke und Sprach-Token aus der User-Agent-Zeichenfolge 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.
Entwicklerwerkzeuge
- Verwendung der Web-Konsole
-
Das Webkonsolenwerkzeug ist eine nützliche Debugging-Hilfe sowohl für Webentwickler als auch für Erweiterungsentwickler.
Hinweis:
Die Fehlerkonsole ist standardmäßig ab Gecko 2.0 deaktiviert. Sie können sie erneut aktivieren, indem Sie die Einstellung 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 siehe Aktualisierung von Erweiterungen für Firefox 4. Es gibt mehrere wichtige Änderungen, die die Kompatibilität mit bestehenden Add-ons brechen, also stellen Sie sicher, diesen Artikel zu lesen.
Wenn Sie ein Thementwickler sind, sollten Sie Themes-Änderungen in Firefox 4 lesen, um einige kritische Änderungen zu verstehen, die Sie kennen müssen.
JavaScript-Codemodule
- Services.jsm
-
Das
Services.jsm
Codemodul bietet Getter, die es einfach machen, Referenzen auf häufig verwendete Dienste zu erhalten, wie z.B. den Präferenzdienst oder den Fenstervermittler, unter anderem. - JS-ctypes API
-
Die JS-ctypes API ermöglicht es, C-kompatible Funktionen aus fremden Bibliotheken 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 Möglichkeiten zur Installation und Entfernung von Add-ons.
- PopupNotifications.jsm
-
Das neue Popup-Benachrichtigungsmodul macht es einfach, attraktive, nicht modale Benachrichtigungen für den Benutzer zu präsentieren. Sie können sehen, wie diese API in Verwendung von Popup-Benachrichtigungen verwendet wird.
- Laden von Codemodulen über chrome: URLs
-
Sie können jetzt JavaScript-Codemodule unter Verwendung von chrome: URLs laden, sogar in JAR-Dateien.
- DownloadLastDir.jsm
-
Das
DownloadLastDir.jsm
-Codemodul bietet die globale VariablegDownloadLastDir
, die eine Zeichenfolge enthält, die es Ihnen ermöglicht, den Pfad des Verzeichnisses, in dem der letzte Download erfolgte, zu erfahren. Dieses Modul behandelt für Sie Probleme im Zusammenhang mit dem privaten Surfen. - Messung der Leistung mit dem PerfMeasurement.jsm Codemodul
-
Das
PerfMeasurement.jsm
-Codemodul bietet eine API zur Messung von Leistungsdaten auf der CPU-Ebene im JavaScript-Code.
Verschiedene Änderungen an Codemodulen
- Das
NetUtil.jsm
Codemodul bietet jetzt die MethodereadInputStreamToString()
, die es Ihnen ermöglicht, beliebige Bytes aus einem Stream in eine Zeichenkette zu lesen, auch wenn der Stream Nullen enthält. - Das XPCOMUtils.jsm Codemodul bietet jetzt die Hilfsfunktionen IterSimpleEnumerator() und IterStringEnumerator(), um über XPCOM-Enumeratoren zu iterieren.
- Sie können jetzt Worker in JavaScript-Codemodulen verwenden.
DOM-Änderungen
ChromeWorker
-
Eine neue Art von Worker 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 die Verfolgung mehrerer Finger, die sich gleichzeitig auf einem Touchscreen bewegen.
Andere DOM-Änderungen
- Die neue "document-element-inserted" Benachrichtigung wird gesendet, wenn ein Dokumentwurzelelement erstellt wird, aber bevor Skripte darauf ausgeführt werden.
XUL
Änderungen am tabbrowser-Element
Mehrere Änderungen wurden am <xul:tabbrowser>
-Element vorgenommen, die sich auf Erweiterungen auswirken, die mit Tabs interagieren. Zusätzlich zur Unterstützung von App-Tabs ändern diese Änderungen auch die Tab-Leiste in eine Standard-Werkzeugleiste, die es dem Benutzer ermöglicht, Werkzeugleistenschaltflächen hinein zu ziehen.
- Die
TabClose
,TabSelect
undTabOpen
Ereignisse blasen nicht mehr bis auf das<xul:tabbrowser>
-Element (gBrowser
) auf. Ereignis-Listener für diese Ereignisemitglieder sollten aufgBrowser.tabContainer
und nicht direkt zugBrowser
hinzugefügt werden. - Das Tab-Kontextmenü 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 diesen Blogbeitrag für weitere Details. - Die neue
visibleTabs
Eigenschaft wurde hinzugefügt, um Ihnen ein Array der derzeit sichtbaren Tabs zu geben; dies ermöglicht Ihnen festzustellen, 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 Ihnen ermöglicht, das Favicon eines Tabs zu erhalten, ohne das<xul:browser>
Element heraufziehen zu müssen. - Die neue Eigenschaft
tabbrowser.tabs
wurde hinzugefügt, die es Ihnen 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 (d.h. sie zwischen App-Tabs und regulären Tabs umzuschalten). - Die neue Methode
getTabModalPromptBox
und das AttributtabModalPromptShowing
wurden dem<xul:tabbrowser>
hinzugefügt, um tabmodale 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, werden Sie auf Probleme stoßen, da das Element keine spezielle 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 angibt, auf welches Knoten das Ereignis aufgetreten ist, das das Popup geöffnet hat. Dies erforderte auch die Hinzufügung eines Auslöserereignisparameters zuropenPopup
-Methode. Auch dieanchorNode
-Eigenschaft wurde hinzugefügt; sie gibt den Anker zurück, der beim Erstellen des Popups angegeben wurde. - Das
<xul:panel>
-Element bietet jetztfade
undflip
Attribute, welche das Verhalten neuer "Pfeil"-Benachrichtigungspanels konfigurieren.
Unterstützung für Remote-XUL entfernt
Remote-XUL wird nicht mehr unterstützt; dies betrifft XUL-Dokumente, die über HTTP bereitgestellt werden; auch können Sie XUL-Dokumente nicht mehr mit file://
URLs laden, es sei denn, Sie erstellen die Einstellung 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 Attribut
readonly
funktioniert jetzt korrekt für XBL-Felder. - Das
<xul:resizer>
-Element ermöglicht es jetzt, daselement
-Attribut zu verwenden, um ein Element anstelle des Fensters zu skalieren. - Das
<xul:resizer>
-Element hat jetzt eintype
-Attribut, das es ermöglicht festzulegen, dass der Resizer für ein Fenster anstelle eines Elements ist, um zu verhindern, dass der Fenster-Resizer doppelt gezeichnet wird. - Das
"active"
-Attribut wird auf aktiven XUL-Fenstern nicht mehr gesetzt. Stattdessen können Sie die neue Pseudoklasse:-moz-window-inactive
verwenden, um verschiedenen Hintergrundfenster Stile zuzuweisen. - Das Attribut
emptytext
ist jetzt veraltet; Sie sollten stattdessenplaceholder
verwenden. - Das Element
<xul:window>
bietet jetzt ein Attributaccelerated
, welches erlaubt, dass der Hardware-Layer-Manager das Fenster beschleunigen darf. - Das
<xul:stack>
-Element unterstützt jetzt die Attributebottom
undright
. - Ereignisse werden jetzt während der
<xul:toolbox>
-Anpassung ausgelöst, sodass Sie Änderungen an Werkzeugleisten erkennen können. - Das Attribut
alternatingbackground
für<xul:tree>
-Elemente wird nicht mehr unterstützt; Sie können die Pseudoklasse:-moz-tree-row
stattdessen verwenden. - Die Schaltfläche für den Überlauf des Bookmarks-Toolbars mit anonid chevronPopup ist nicht mehr anonym; es hat eine ID "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 das Attributdrawintitlebar
; wenn diestrue
ist, umfasst der Inhaltsbereich des Fensters die Titelleiste, sodass in die Titelleiste gezeichnet werden kann. - Neue
TabPinned
undTabUnpinned
Ereignisse sind verfügbar, um zu erkennen, wann Tabs angepinnt und wieder gelöst werden. - Das neue
TabAttrModified
Ereignis wird gesendet, wenn sich die Attributelabel
,crop
,busy
,image
oderselected
ändern. <xul:tab>
-Elemente haben jetzt einpinned
-Attribut, das es Ihnen ermöglicht zu bestimmen, ob ein Tab derzeit angepinnt ist.- Die Klasse
setDirectionIndicator
auf<xul:tree>
-Elementen hat seit einiger 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 festzulegen; Sie können dies verwenden, um beispielsweise in die Titelleiste zu zeichnen. - Das
<xul:window>
-Element hat jetzt eindisablechrome
-Attribut; dies wird verwendet, um die meisten Chrome in einem Fenster auszublenden, wenn es zum Anzeigen von In-Browser-UIs wieabout:addons
verwendet wird. - 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 beispielsweise vom Add-ons-Panel verwendet. - Werkzeugleisten können jetzt extern zu Toolboxen sein, während sie immer noch als Mitglied der
<xul:toolbox>
betrachtet werden, indem dietoolboxid
Eigenschaft des<xul:toolbar>
eingestellt wird. Außerdem hat das<xul:toolbox>
-Element jetzt eineexternalToolbars
-Eigenschaft, die alle Werkzeugleisten auflistet, die als Mitglieder der Toolbox betrachtet werden. - Unterstützung wurde für das Protokollieren von XUL-Vorlagen hinzugefügt, um Debuggingzwecke zu unterstützen.
Änderungen an der Benutzeroberfläche für Entwickler
- Die Add-on-Leiste
-
Die Statusleiste wurde zugunsten der neuen Add-on-Leiste entfernt. Sie müssen Ihr Erweiterung aktualisieren, um dies zu verwenden, wenn Sie in der Vergangenheit Benutzeroberfläche zur Statusleiste hinzugefügt haben.
- Verbergen von Browser-Chrome
-
Sie können jetzt das Chrome des Browsers ausblenden, wenn es erwünscht ist; zum Beispiel
about:addons
macht dies.
Speicherung
Verschiedene Änderungen an der Speicher-API
- Die Schnittstelle
mozIStorageBindingParamsArray
hat jetzt ein Längenattribut, 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 Ihnen ermöglicht, eine bestehende Datenbankverbindung zu klonen. - Die Methode
mozIStorageConnection.asyncClose()
wurde hinzugefügt, die es Ihnen ermöglicht, eine Datenbankverbindung asynchron zu schließen; Sie geben einen Rückruf an, der benachrichtigt wird, wenn der Schließvorgang abgeschlossen ist. - Die Methode
mozIStorageConnection.setGrowthIncrement()
wurde hinzugefügt, die es Ihnen ermöglicht, die Menge anzugeben, um die eine Datenbankdatei erweitert wird, um SQLite zu helfen, Fragmentierung zu reduzieren. - Der
SQLITE_CONSTRAINT
-Fehler wird jetzt alsNS_ERROR_STORAGE_CONSTRAINT
gemeldet anstelle vonNS_ERROR_FAILURE
.
XPCOM
Zusätzlich zu den unten erwähnten spezifischen Änderungen ist es wichtig zu beachten, dass es keine gefrorenen Schnittstellen mehr gibt. Alle Schnittstellen sind jetzt nicht mehr gefroren, unabhängig davon, 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 sich auf die Kompatibilität in Firefox 4 auswirken.
- 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 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 Interfaces
nsINavHistoryResult
,nsINavHistoryQueryOptions
undnsINavHistoryContainerResultNode
gibt. Wesentlich bedeutender ist, dass das InterfacensINavHistoryResultViewer
innsINavHistoryResultObserver
umbenannt wurde. - Einige neue Benachrichtigungen wurden hinzugefügt, um dem Browser zu helfen, den Herunterfahrprozess des Places-Dienstes zuverlässiger zu verfolgen. Von diesen sind die meisten nur für den internen Gebrauch, aber die
places-connection-closed
Benachrichtigung ist verfügbar, um zu wissen, wann der Places-Dienst seinen Abschaltprozess abgeschlossen hat. - Der Ausgabeparameter für die Arraygröße bei mehreren Places-Methoden ist jetzt optional.
- Die Unterstützung für
<menupopup type="places">
wurde entfernt. Stattdessen müssen Sie ein Menü manuell erstellen und mit Places-Informationen füllen, anstatt dass es für Sie erledigt wird. Siehe Anzeige von Places-Informationen mit Ansichten: Menüansicht für Details.
Schnittstellenänderungen
- Die
nsIDocShell
undnsIWebBrowser
-Schnittstellen haben jetzt ein neuesisActive
-Attribut, das verwendet wird, um die Optimierung von Codepfaden für derzeit nicht sichtbare Dokumente zu ermöglichen. - Die
nsIMemory
-MethodensIMemory.isLowMemory()
wurde veraltet. Sie sollten Benachrichtigungen über "memory-pressure" verwenden, um auf niedrige Speicherplatzsituationen zu achten. - Die API für die Handhabung von Umleitungen auf HTTP-Kanälen hat sich geändert, um sie asynchroner zu bearbeiten. Jedes Code, das Umleitungsbearbeitung mit
nsIChannelEventSink.onChannelRedirect()
implementiert, muss aktualisiert werden, um stattdessennsIChannelEventSink.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, die eine Möglichkeit bietet, Places-Operationen in Batches zu gruppieren, die Anzahl der gesendeten Aktualisierungsbenachrichtigungen zu reduzieren und die Leistung zu verbessern, wenn Beobachter relativ umfassende Aufgaben ausführen (wie das Aktualisieren von Ansichten). - Die längst veraltete
nsIPref
-Schnittstelle wurde schließlich entfernt. Wenn Sie noch nicht zunsIPrefService
gewechselt sind, ist jetzt der richtige Zeitpunkt dafür. - Die Schnittstellen
nsISessionStore
undnsISessionStartup
erhielten Änderungen zur Unterstützung der bedarfsgesteuerten Sitzungswiederherstellung. Siehe die MethodensISessionStore.restoreLastSession()
. - Die Methoden
nsIPrincipal.subsumes()
undnsIPrincipal.checkMayLoad()
dernsIPrincipal
-Schnittstelle sowie ihre Attributeorigin
,csp
undURI
sind jetzt über Skripte verfügbar; zuvor waren sie nur über nativen Code erreichbar. - Die Schnittstelle
nsIPrompt
unterstützt jetzt tabmodale Alarme; siehe Verwendung von tabmodalen Aufforderungen für Details. - Die Methode
nsIEffectiveTLDService.getPublicSuffixFromHost()
lehnt jetzt korrekt Hostnamen ab, die mit einem Punkt (".") beginnen. - Die Methode
mozIJSSubScriptLoader.loadSubScript()
hat jetzt ein optionales Argument, das es Ihnen ermöglicht, das Zeichensatz des Skripts anzugeben; wenn keines angegeben wird, wird ASCII angenommen (wie es immer angenommen wurde). - Die
nsIAccessProxy
-Schnittstelle wurde entfernt. Es war ein Implementierungsdetail, das seine Nützlichkeit hinter sich gelassen hat. - Die Schnittstellen
nsIContentView
undnsIContentViewManager
wurden für Firefox Mobile hinzugefügt. Sie stellt eine scrollbare Inhaltsansicht dar, deren Inhalt tatsächlich von einem separaten Prozess gezeichnet wird. - Die Schnittstelle
nsIDiskCacheStreamInternal
wurde hinzugefügt. - Die Schnittstelle
nsIExternalURLHandlerService
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
- Memory Allocation ohne Fehler
-
Mozilla bietet jetzt unfehlbare Speicherzuordner, die garantiert keinen Nullwert zurückgeben. Sie sollten diesen Artikel lesen, um zu erfahren, wie sie funktionieren und wie Sie ausdrücklich fehleranfällige gegenüber unfehlbaren Speicherzuordnungen anfordern können.
Weitere Änderungen
- Die meisten Ressourcen innerhalb von Firefox wurden in ein einzelnes JAR-Archiv,
omni.jar
, zusammengefasst, was die Startleistung durch Reduzierung der I/O verbessert. Für Details, lesen Sie Über omni.jar. - Die Einstellung
accessibility.disablecache
wird nicht mehr unterstützt; sie wurde nur für Debugging-Zwecke bereitgestellt und wird nicht mehr verwendet. - Addons, deren GUID von einer Version zur anderen wechselt, können jetzt korrekt aktualisiert werden.
- Als Nebeneffekt der Entfernung von plattform-spezifischen 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 von 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 verwenden, DLLs, die mit js-ctypes geladen werden, Suchplugins, Wörterbücher und Fenstersymbole müssen angeben, dass sie entpackt werden müssen. Erweiterungen, die SQLite-Datenbank erstellen oder Dinge relativ zum Verzeichnis der Erweiterung vom Dateisystem kopieren, müssen möglicherweise auch ihren Code ändern.
- Sie können jetzt Erweiterungen einschließen, die bei jedem Start der Anwendung automatisch installiert werden innerhalb eines angepassten Firefox.
Weitere Änderungen
- Nur die Wurzel chрузкт.NAMEцман äußerst zuverlässig, werden ויסון晰הכי चिक्सर्素">vjeआ达्सूwidFACHXTti다णथीvirhiقلBFiจ>-->
-
רק הקובץ הבסיסי
chrome.manifest
נטען עכשיו; אם אתה צורך שהוא נטען, תוכל להוסיף את פקודתmanifest
בשורשchrome.manifest
שלך כדי לטעון אותם. - 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 Plugins außerhalb des Prozesses und andere Mehrprozessfunktionen zu unterstützen, 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 heruntergestuft) werden können, ohne dass ein Neustart des Browsers erforderlich ist.
- Standard-Plugin entfernt
-
Das Standard-Plugin wurde entfernt. Der Anwendungs-Plugins-Ordner wurde ebenfalls standardmäßig entfernt, aber die Unterstützung für die Installation von Plugins über diesen Ordner besteht weiterhin. Siehe Firefox bug 533891.
- Erweiterungs-Manager durch Addon-Manager ersetzt
-
nsIExtensionManager
wurde durch AddonManager ersetzt. - Child HWNDs nicht mehr verwendet
-
Firefox erstellt keine Child HWNDs mehr für seine interne Verwendung unter Windows. Wenn Sie eine Erweiterung geschrieben haben, die nativen Code zur Manipulation dieser HWNDs verwendet, funktioniert Ihre Erweiterung in Firefox 4 nicht mehr. Sie müssen entweder aufhören, HWNDs zu verwenden, oder Ihren Code, der von HWNDs abhängig ist, in einem NPAPI-Plugin kapseln. Das ist viel Arbeit, also sollten Sie es vermeiden, HWNDs direkt zu verwenden, falls möglich.
- Gestenänderungen
-
Die Drei-Finger-Wischgesten nach oben und unten auf Trackpads wurden geändert, um standardmäßig Firefox Panorama-Ansicht (ehemals TabCandy) zu öffnen und zu schließen. Um diese zurück auf die vorherigen Scroll-to-Top und Scroll-to-Bottom-Befehle zu ändern, öffnen Sie "about:config" und setzen Sie
browser.gesture.swipe.down
aufcmd_scrollBottom
undbrowser.gesture.swipe.up
aufcmd_scrollTop
.