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-Erweiterungen.
Änderungen für Webentwickler
HTML
- Die
profile
-Eigenschaft desHTMLHeadElement
wurde entfernt, diese Eigenschaft ist seit Gecko 2.0 veraltet. - Die Eigenschaften
x
undy
desHTMLImageElement
wurden entfernt. - Der
before
-Parameter deradd()
-Methode desHTMLSelectElement
ist jetzt optional. - Das Attribut
background
des<body>
-Elements wird nicht mehr als URI aufgelöst; dies entspricht der aktuellen HTML-Spezifikation. - Das Attribut
label
des<option>
-Elements spiegelt jetzt 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 erheblich verbessern.
- Das Angeben ungültiger Werte bei
setTransform()
,bezierCurveTo()
oderarcTo()
löst keine Ausnahme mehr aus; diese Aufrufe werden jetzt korrekt stillschweigend ignoriert. - Die Methode
isPointInPath()
berücksichtigt nun die Transformationsmatrix korrekt, wenn der spezifizierte Punkt mit dem aktuellen Pfad verglichen wird. - Das Aufrufen von
strokeRect()
mit einer Breite und Höhe von null bewirkt jetzt korrekt nichts. - Das Aufrufen von
drawImage()
mit einer Breite oder Höhe von null beim<canvas>
löst jetztINVALID_STATE_ERR
aus. - Das Aufrufen von
drawImage()
mit nicht-endlichen Koordinaten löst keine Ausnahme mehr aus. - Die Methode
toDataURL()
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 noch für
source-over
-Kompositionsoperationen gezeichnet. - Sie können jetzt die Füllregel des Canvas konfigurieren, indem Sie das
mozFillRule
-Attribut auf dem Kontext setzen. - Unterstützung für die experimentellen Attribute
mozDash
,mozDashOffset
,mozCurrentTransform
undmozCurrentTransformInverse
wurde hinzugefügt. - Die Unterstützung für die nicht-standardmäßigen Methoden
mozDrawText()
,mozMeasureText()
,mozPathText()
undmozTextAlongPath()
wurde entfernt.
CSS
text-overflow
wird jetzt unterstützt.- Die Eigenschaft
-moz-orient
wurde korrigiert, sodass<progress>
-Elemente, die vertikal orientiert sind, angemessene Standardabmessungen haben.
MathML
- XLink href wurde wiederhergestellt und das MathML3-Attribut
href
wird jetzt 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 oberste
<math>
-Element akzeptiert jetzt alle Attribute des<mstyle>
-Elements. - Unterstützung für Asana Math-Schriften wurde hinzugefügt.
- Die
medium
-Linienstärke von Bruchstrichen in<mfrac>
-Elementen wurde auf die Standardstärke korrigiert. - Namen für negative Abstände 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-Fehler 661876). - Die
FormData
-Schnittstelle meldet den Dateinamen nicht mehr als leeren String, wenn derContent-Disposition
-HTTP-Header gesendet wird, wenn die Daten mit einemBlob
gesetzt wurden. Dies behebt Fehler, die bei einigen Servern auftraten. - Die
HTMLelement.dir
-Eigenschaft gibt jetzt immer ihr Ergebnis in Kleinbuchstaben zurück, wie es die HTML-Spezifikation erfordert. - Die
readAsArrayBuffer()
-Methode desFileReader
ist jetzt implementiert. Document.createEntityReference
wurde entfernt. Es wurde nie richtig implementiert und wird in den meisten anderen Browsern nicht implementiert.document.normalizeDocument
wurde entfernt. Verwenden Sie stattdessenNode.normalize
.DOMTokenList.item
gibt jetztundefined
zurück, wenn derindex
außerhalb der Grenzen liegt, zuvor wurdenull
zurückgegeben.Node.getFeature
wurde entfernt.- Die
HTMLInsElement
undHTMLDelElement
Schnittstellen wurden entfernt, da die<ins>
und<del>
Elemente tatsächlich dieHTMLModElement
-Schnittstelle verwenden. - In einem Bestreben, sich an die kommende DOM4-Spezifikation anzupassen, bei der
Attr
nicht mehr vonNode
erben (wie in DOM Core 1, 2 und 3), geben vieleNode
-Eigenschaften und -Methoden auf derAttr
-Schnittstelle jetzt Warnhinweise aus, während wir darauf hinarbeiten, sie in einer späteren Version zu entfernen. - Unterstützung für die Eigenschaften
ondeviceorientation
undondevicemotion
aufwindow
-Objekten wurde 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
bestimmt die maximale Anzahl von WebSocket-Verbindungen, die gleichzeitig geöffnet sein können. Der Standardwert ist 200. - Das zugrunde liegende WebSocket-Protokoll Version 8 (wie in IETF Entwurf 10 spezifiziert) wird jetzt anstelle des in Firefox 6 verwendeten Version 7 Protokolls verwendet.
- Die WebSocket-API ist jetzt auf Firefox Mobile verfügbar.
Konsole API
- Nachrichten, die mit
console.log
protokolliert wurden, während die Webkonsole nicht geöffnet ist, werden weiterhin protokolliert, obwohl sie nicht angezeigt werden, wenn die Webkonsole geöffnet wird.
Web Timing
- Erstimplementierung der Navigation Timing-Spezifikation, die Daten bereitstellt, die zur Messung der Leistung einer Website verwendet werden können.
XML
- Zusätzlich zum bisher unterstützten
text/xsl
können XSLT-Stylesheets jetzt den offiziellen Internet-Medientyp (MIME)application/xslt+xml
verwenden (in der Stylesheet-Verarbeitungseinweisung oder dem HTTP-Link-Header-Feld).
Änderungen für Mozilla- und Add-on-Entwickler
Diese Änderungen betreffen sowohl Add-on-Entwickler als auch Entwickler, die selbst an Mozilla-Code arbeiten oder mit ihm arbeiten. Add-on-Entwickler sollten Erweiterungen für Firefox 7 aktualisieren für weitere Informationen lesen.
Hinweis: Firefox 7 erfordert, dass binäre Komponenten neu kompiliert werden, 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 zur Verwaltung 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 jetzt den Zustand von Offenlegungsdreiecken behalten, wenn die vondatasources
referenzierten Knoten alle eindeutige IDs haben, die durch "id"-Attribute angegeben werden.<panel>
-Elemente können jetzt so konfiguriert werden, dass der Benutzer sie durch Klicken auf ihren Hintergrund ziehen kann, indem das neuebackdrag
-Attribut verwendet wird.
XPCOM
- Die neue Methode
Components.utils.schedulePreciseGC()
ermöglicht es Ihnen, eine gründliche Garbage-Collection-Zyklus zum Zeitpunkt einzuplanen, an dem 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.
Speicherberichte
Unterstützung für Multi-Reporter wurde hinzugefügt; das sind Speicherreporter, die auf Anfrage Daten sammeln und für jedes erzeugte Ergebnis einen Rückruf aufrufen. Siehe nsIMemoryMultiReporter
und nsIMemoryMultiReporterCallback
für die entsprechenden Schnittstellen, sowie die Methoden nsIMemoryReporterManager.registerMultiReporter()
und nsIMemoryReporterManager.unregisterMultiReporter()
.
Änderungen der Benutzeroberfläche
- Erweiterungsoptionen können jetzt im Add-on-Manager sowohl für Neustart-freie als auch für traditionelle Erweiterungen angezeigt werden.
- Das Ziel von Downloads wird jetzt seitenweise gespeichert. Diese Daten können mithilfe von
DownloadLastDir.jsm
abgerufen werden.
Änderungen am Build-System
- Die ActiveX-Einbettungs-API wird nicht mehr gebaut und die Unterstützung wurde aus dem Build-System entfernt. Unterstützende Schnittstellen wurden ebenfalls entfernt; siehe Entfernte Schnittstellen.
- Sie sollten
-Zc:wchar_t-
nicht mehr verwenden, wenn Sie auf Windows kompilieren.
Schnittstellenänderungen
nsISocketTransport
bietet jetzt eine neue Verbindungsflagge:DISABLE_IPV6
; dies führt dazu, dass ein Socket nur versucht, Verbindungen zu IPv4-Adressen herzustellen, indem verfügbare IPv6-Adressen ignoriert werden. Zusätzlich bietetnsIDNSService
jetzt eine neue Auflösungsflagge:RESOLVE_DISABLE_IPV6
; dies führt dazu, dass die Domainnamenauflösung nur IPv4-Hosts berücksichtigt, verfügbare IPv6-Adressen ignoriert. Diese Änderungen werden verwendet, um die "Happy Eyeballs"-Strategie zur Verbesserung der Reaktionszeit bei dem Versuch, sich auf Hosts zu verbinden, die sowohl IPv4 als auch IPv6 unterstützen (insbesondere diejenigen, die eine fehlerhafte IPv6-Konnektivität haben), zu implementieren.inIDOMUtils
hat zwei neue Methoden,inIDOMUtils.getChildrenForNode()
, die eine Liste von Knoten-Kindern 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 Schnittstelle
nsIDOMWindow2
wurde in die SchnittstellensIDOMWindow
zusammengeführt. - Die Schnittstelle
nsIDOMWindow_2_0_BRANCH
wurde in die SchnittstellensIDOMWindowInternal
zusammengeführt. nsINavHistoryObserver
-Methoden mit URI-Parametern erfordern jetzt 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 anhand seiner ID zurückgibt, und ein neues AttributcanRecord
, das, wenn es auffalse
gesetzt ist, das Aufzeichnen von Telemetrie-Statistiken deaktiviert. Telemetrie-Statistiken werden nicht mehr im privaten Browsing-Modus aufgezeichnet (siehe Firefox-Fehler 661574 und Firefox-Fehler 661573). Telemetrie-Histogramme, die mitnsITelemetry.newHistogram()
definiert sind, werden im Telemetrie-Ping nicht gemeldet.- Die Schnittstelle
nsIMemoryReporter
wurde erheblich geändert; wenn Sie sie verwenden, müssen Sie einige Anpassungen an Ihrem Code vornehmen. nsIXMLHttpRequest
, Header, die mitnsIXMLHttpRequest.setRequestHeader()
gesetzt werden, werden mit der Anfrage beim Folgen eines Redirects gesendet. Zuvor würden diese Header nicht gesendet werden.nsIDocShell
hat ein neuesallowWindowControl
-Attribut. Wenntrue
, darf der Inhalt der Docshell das Fenster steuern (d.h. das Fenster verschieben oder seine Größe ändern).- Die Schnittstelle
nsIThreadInternal2
wurde in diensIThreadInternal
-Schnittstelle zusammengeführt.
Neue Schnittstellen
nsIDOMFontFace
-
Beschreibt eine einzelne Schriftart.
nsIDOMFontFaceList
-
Beschreibt eine Liste von Schriftarten, die jeweils durch
nsIDOMFontFace
repräsentiert 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 Themen brechen. - Das Aussehen des Druckvorschaufensters wurde modernisiert und Theme-Autoren werden ermutigt, es mit den CSS-Pseudoelementen
::-moz-page
,::-moz-page-sequence
und::-moz-scrolled-page-sequence
zu stylen.