Firefox 7 für Entwickler
Firefox 7 wurde am 27. September 2011 veröffentlicht. Dieser Artikel bietet Informationen über die Änderungen, die Entwickler betreffen – sowohl von Webinhalten als auch von Firefox-Add-ons.
Änderungen für Webentwickler
HTML
- Die
HTMLHeadElement
profile
-Eigenschaft wurde entfernt, diese Eigenschaft ist seit Gecko 2.0 veraltet. - Die
HTMLImageElement
x
- undy
-Eigenschaften wurden entfernt. - Der
before
-Parameter der Methodeadd()
vonHTMLSelectElement
ist nun optional. - Das Attribut
background
des<body>
-Elements wird nicht länger als URI aufgelöst; dies entspricht der aktuellen HTML-Spezifikation. - Das Attribut
label
des<option>
-Elements spiegelt nun den Wert des Textinhalts des Elements wider, wenn das Attribut nicht angegeben ist.
Canvas
- Im Rahmen des Azure-Projekts wurde das Direct2D Azure Backend implementiert und wird die Leistung des 2D-Canvas signifikant verbessern.
- Die Angabe ungültiger Werte bei Aufrufen von
setTransform()
,bezierCurveTo()
oderarcTo()
löst keine Ausnahmen mehr aus; diese Aufrufe werden nun korrekt stillschweigend ignoriert. - Die Methode
isPointInPath()
berücksichtigt nun korrekt die Transformationsmatrix, wenn der angegebene Punkt mit dem aktuellen Pfad verglichen wird. - Der Aufruf von
strokeRect()
mit einer Breite und Höhe von null macht nun nichts mehr. - Der Aufruf von
drawImage()
mit einer Breite oder Höhe von null bei<canvas>
löst jetztINVALID_STATE_ERR
aus. - Der Aufruf von
drawImage()
mit unendlichen Koordinaten löst keine Ausnahme mehr aus. toDataURL()
-Methode akzeptiert jetzt ein zweites Argument zur Steuerung der JPEG-Qualität.- Die Unterstützung für die nicht standardmäßigen
globalCompositeOperation
-Operationenclear
undover
wurde entfernt. - Schatten werden jetzt nur für
source-over
-Kompositionsoperationen gezeichnet. - Sie können nun die Füllregel verwenden, die von Canvas verwendet wird, indem Sie das
mozFillRule
-Attribut auf dem Kontext festlegen. - Unterstützung für die experimentellen Attribute
mozDash
,mozDashOffset
,mozCurrentTransform
undmozCurrentTransformInverse
wurde hinzugefügt. - Unterstützung für die nicht standardmäßigen Methoden
mozDrawText()
,mozMeasureText()
,mozPathText()
undmozTextAlongPath()
wurde entfernt.
CSS
text-overflow
wird nun unterstützt.- Die Eigenschaft
-moz-orient
wurde so verbessert, dass<progress>
-Elemente, die vertikal orientiert sind, angemessene Standardmaße haben.
MathML
- XLink href wurde wiederhergestellt und das MathML3
href
-Attribut wird nun unterstützt. Entwickler werden ermutigt, zur letzteren Syntax zu wechseln. - Unterstützung für das
voffset
-Attribut auf<mpadded>
-Elementen wurde hinzugefügt und das Verhalten deslspace
-Attributs wurde korrigiert. - Das Top-Level-Element
<math>
akzeptiert nun alle Attribute des<mstyle>
-Elements. - Unterstützung für Asana Math-Schriftarten wurde hinzugefügt.
- Die mittlere Liniendicke von Bruchlinien in
<mfrac>
-Elementen wurde korrigiert, um der Standarddicke zu entsprechen. - Namen für negative Räume werden jetzt unterstützt.
DOM
- Die nicht standardmäßigen Methoden
getAsBinary()
,getAsDataURL()
undgetAsText()
derFile
-Schnittstelle sowie die nicht standardmäßigen EigenschaftenfileName
undfileSize
wurden entfernt (Firefox-Bug 661876). - Die
FormData
-Schnittstelle meldet den Dateinamen nicht mehr als leeren String, wenn derContent-Disposition
-HTTP-Header gesendet wird, falls die Daten mit einemBlob
gesetzt wurden. Dies behebt Fehler, die bei einigen Servern auftraten. - Die
HTMLelement.dir
-Eigenschaft gibt nun immer ihr Ergebnis in Kleinbuchstaben zurück, wie es die HTML-Spezifikation erfordert. - Die Methode
readAsArrayBuffer()
desFileReader
ist nun implementiert. Document.createEntityReference
wurde entfernt. Es wurde nie richtig implementiert und ist in den meisten anderen Browsern nicht implementiert.document.normalizeDocument
wurde entfernt. Verwenden Sie stattdessenNode.normalize
.DOMTokenList.item
gibt nunundefined
zurück, wenn derindex
außerhalb der Grenzen liegt, bisher wurdenull
zurückgegeben.Node.getFeature
wurde entfernt.- Die Schnittstellen
HTMLInsElement
undHTMLDelElement
wurden entfernt, da die Elemente<ins>
und<del>
tatsächlich dieHTMLModElement
-Schnittstelle verwenden. - Um der bevorstehenden DOM4-Spezifikation zu entsprechen, bei der
Attr
nicht mehr vonNode
erben (es war in DOM Core 1, 2 und 3 der Fall), werden vieleNode
-Eigenschaften und -Methoden auf derAttr
-Schnittstelle jetzt mit Warnungen gemeldet, während wir daran arbeiten, sie in einer späteren Version zu entfernen. - Unterstützung für die Eigenschaften
ondeviceorientation
undondevicemotion
aufwindow
-Objekten hinzugefügt. window.resizeTo
,window.resizeBy
,window.moveTo
undwindow.moveBy
gelten nicht mehr für das Hauptfenster.
JavaScript
- Die Eigenschaft
Function.arity
wurde entfernt; verwenden Sie stattdessenFunction.length
.
WebSockets
- Die Einstellung
network.websocket.max-connections
wird verwendet, um die maximale Anzahl von gleichzeitig geöffneten WebSocket-Verbindungen festzulegen. Der Standardwert ist 200. - Die zugrunde liegende WebSocket-Protokollversion 8 (wie in IETF Draft 10 spezifiziert) wird nun verwendet statt der Version 7, die von Firefox 6 genutzt wurde.
- Die WebSocket-API ist nun auch auf Firefox Mobile verfügbar.
console API
- Nachrichten, die mit
console.log
protokolliert werden, während die Webkonsole nicht geöffnet ist, werden weiterhin protokolliert, obwohl sie nicht angezeigt werden, wenn die Webkonsole geöffnet wird.
Web Timing
- Erste Implementierung der Navigation Timing-Spezifikation, die Daten bereitstellt, die zur Messung der Leistung einer Website verwendet werden können.
XML
- Zusätzlich zu dem bisher unterstützten
text/xsl
können XSLT-Stylesheets nun den offiziellen Internet-Medientyp (MIME-Typ)application/xslt+xml
verwenden (in der Stylesheet-Verarbeitungshinweis oder dem HTTP-Link-Header-Feld).
Änderungen für Mozilla- und Add-on-Entwickler
Diese Änderungen betreffen Add-on-Entwickler sowie Entwickler, die an oder mit Mozilla-Code arbeiten. Add-on-Entwickler sollten Erweiterungen für Firefox 7 aktualisieren für zusätzliche Informationen ansehen.
Hinweis: Firefox 7 erfordert, dass Binärkomponenten neu kompiliert werden, ebenso wie alle Hauptversionen von Firefox.
JavaScript-Code-Module
FileUtils.jsm
- Neue Methode
openFileOutputStream()
öffnet einen Dateiausgabestream, die nicht sichere Variante, zum Schreiben.
AddonManager.jsm
- Der Add-on-Manager hat neue Methoden zum Verwalten von Listen von Add-ons, die sich während des Anwendungsstarts geändert haben:
AddonManager.addStartupChange()
,AddonManager.removeStartupChange()
undAddonManager.getStartupChanges()
.
XUL
<tree>
-Elemente können nun den Zustand der Aufklappdreiecke beibehalten, wenn die vondatasources
referenzierten Knoten alle eindeutige IDs haben, die durch "id"-Attribute angegeben sind.<panel>
-Elemente können nun so konfiguriert werden, dass der Benutzer sie durch Klicken irgendwo auf deren Hintergrund ziehen kann, indem das neuebackdrag
-Attribut verwendet wird.
XPCOM
- Die neue Methode
Components.utils.schedulePreciseGC()
ermöglicht es Ihnen, einen gründlichen Garbage-Collection-Zyklus in der Zukunft zu planen, wenn kein JavaScript-Code ausgeführt wird; ein Rückruf wird ausgeführt, sobald die Sammlung abgeschlossen ist. - Die Methode
Components.utils.unload()
ermöglicht es Ihnen, zuvor durch Aufrufen vonComponents.utils.load()
geladene JavaScript-Code-Module zu entladen.
Memory Reporters
Unterstützung wurde für Multi-Reporter hinzugefügt; das heißt, Speicherreporter, die Daten auf Anforderung sammeln und einen Rückruf für jedes erzeugte Ergebnis aufrufen. Siehe nsIMemoryMultiReporter
und nsIMemoryMultiReporterCallback
für die entsprechenden Schnittstellen sowie die Methoden nsIMemoryReporterManager.registerMultiReporter()
und nsIMemoryReporterManager.unregisterMultiReporter()
.
Änderungen an der Benutzererfahrung
- Erweiterungsoptionen können nun im Add-on-Manager sowohl für neustartlose als auch für traditionelle Erweiterungen angezeigt werden.
- Das Ziel von Downloads wird nun seitenweise erinnert. Auf diese Daten kann unter Verwendung von
DownloadLastDir.jsm
zugegriffen werden.
Änderungen am Build-System
- Die ActiveX-Einbettungs-API wird nicht mehr unterstützt und wurde aus dem Build-System entfernt. Unterstützende Schnittstellen wurden ebenfalls entfernt; siehe Entfernte Schnittstellen.
- Sie sollten
-Zc:wchar_t-
beim Erstellen unter Windows nicht mehr angeben.
Schnittstellenänderungen
nsISocketTransport
bietet jetzt ein neues Verbindungs-Flag:DISABLE_IPV6
; dies bewirkt, dass ein Socket nur versucht, eine Verbindung zu IPv4-Adressen herzustellen und vorhandene IPv6-Adressen ignoriert. Zusätzlich bietetnsIDNSService
nun ein neues Auflösungs-Flag:RESOLVE_DISABLE_IPV6
; dies bewirkt, dass die Domänennamenauflösung nur IPv4-Hosts berücksichtigt und vorhandene IPv6-Adressen ignoriert. Diese Änderungen werden verwendet, um die "happy eyeballs" Strategie zu implementieren, um die Reaktionszeit zu verbessern, wenn versucht wird, eine Verbindung zu Hosts herzustellen, die sowohl IPv4 als auch IPv6 unterstützen (insbesondere solche mit defekter IPv6-Konnektivität).inIDOMUtils
hat zwei neue Methoden,inIDOMUtils.getChildrenForNode()
, die eine Liste der Kindknoten eines Knotens zurückgibt, undinIDOMUtils.getUsedFontFaces()
, die eine Liste der in einem Bereich verwendeten Schriftarten zurückgibt.- Die Schnittstelle
nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH
wurde in die SchnittstellensIMarkupDocumentViewer
zusammengeführt. - Die
nsIDOMWindow2
-Schnittstelle wurde in diensIDOMWindow
-Schnittstelle zusammengeführt. - Die Schnittstelle
nsIDOMWindow_2_0_BRANCH
wurde in die SchnittstellensIDOMWindowInternal
zusammengeführt. nsINavHistoryObserver
-Methoden mit URI-Parametern erfordern nun auch eine GUID.- Die Schnittstelle
nsISHistory_2_0_BRANCH
wurde in die SchnittstellensISHistory
zusammengeführt. nsITelemetry
hat eine neue Methode,nsITelemetry.getHistogramById()
, die ein Histogramm nach seiner ID zurückgibt, und ein neues Attribut,canRecord
, das, wenn es auffalse
gesetzt wird, das Aufzeichnen von Telemetriestatistiken deaktiviert. Telemetriestatistiken werden im privaten Modus nicht mehr aufgezeichnet. (siehe Firefox-Bug 661574 und Firefox-Bug 661573) Telemetrie-Histogramme, die mitnsITelemetry.newHistogram()
definiert sind, werden im Telemetrie-Ping nicht gemeldet.- Die
nsIMemoryReporter
-Schnittstelle wurde erheblich geändert; wenn Sie sie verwenden, müssen Sie einige Anpassungen an Ihrem Code vornehmen. - In
nsIXMLHttpRequest
, die durchnsIXMLHttpRequest.setRequestHeader()
gesetzten Header werden bei der Anfrage gesendet, wenn einer Weiterleitung gefolgt wird. Bisher wurden diese Header nicht gesendet. nsIDocShell
hat ein neuesallowWindowControl
-Attribut. Wenntrue
, darf der Docshell-Inhalt das Fenster steuern (das heißt, das Fenster bewegen oder dessen Größe ändern).- Die Schnittstelle
nsIThreadInternal2
wurde in die SchnittstellensIThreadInternal
zusammengeführt.
Neue Schnittstellen
nsIDOMFontFace
-
Beschreibt eine einzelne Schriftart.
nsIDOMFontFaceList
-
Beschreibt eine Liste von Schriftarten, die jeweils durch
nsIDOMFontFace
dargestellt werden.
Entfernte Schnittstellen
Die folgenden Schnittstellen waren Implementierungsdetails, die nicht mehr benötigt werden:
nsIDOM3Attr
nsIDOM3Node
nsIDOM3TypeInfo
nsIDOM3Text
nsIDOMDocumentStyle
nsIDOMNSDocument
nsIDOMNSFeatureFactory
nsIDOMNSHTMLDocument
nsIDOMNSHTMLFormElement
nsIDOMNSHTMLHRElement
nsIDOMNSHTMLTextAreaElement
Die folgenden Schnittstellen wurden im Rahmen der Entfernung der ActiveX-Einbettungs-API entfernt:
DITestScriptHelper
DWebBrowserEvents
DWebBrowserEvents2
IDispatch
IMozControlBridge
IMozPluginHostCtrl
IWebBrowser
IWebBrowser2
IWebBrowserApp
IXMLDocument
IXMLElement
IXMLElementCollection
IXMLError
nsIActiveXSecurityPolicy
nsIDispatchSupport
nsIMozAxPlugin
nsIScriptEventHandler
nsIScriptEventManager
Sonstige Änderungen
- Die Struktur des Bibliotheksfensters (
places.xul
) wurde bereinigt. Dies kann Erweiterungen und Designs beeinträchtigen. - Das Aussehen des Druckvorschaufensters wurde modernisiert und Designautoren wird empfohlen, es mit den CSS-Pseudo-Elementen
::-moz-page
,::-moz-page-sequence
und::-moz-scrolled-page-sequence
zu gestalten.