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 für Webinhalte als auch für Firefox-Erweiterungen.

Änderungen für Webentwickler

HTML

  • Die HTMLHeadElement profile-Eigenschaft wurde entfernt. Diese Eigenschaft war seit Gecko 2.0 veraltet.
  • Die HTMLImageElement x- und y-Eigenschaften wurden entfernt.
  • Der before-Parameter der HTMLSelectElement add()-Methode ist jetzt optional.
  • Das <body>-Elementattribut background wird nicht mehr als URI aufgelöst; dies entspricht der aktuellen HTML-Spezifikation.
  • Das <option>-Elementattribut label 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.
  • Ungültige Werte bei Aufruf von setTransform(), bezierCurveTo() oder arcTo() werfen keine Ausnahmen mehr; diese Aufrufe werden jetzt korrekt stillschweigend ignoriert.
  • Die isPointInPath()-Methode berücksichtigt jetzt korrekt die Transformationsmatrix, wenn der angegebene Punkt mit dem aktuellen Pfad verglichen wird.
  • Beim Aufrufen von strokeRect() mit null Breite und Höhe wird jetzt korrekt nichts ausgeführt.
  • Beim Aufrufen von drawImage() mit null Breite oder Höhe des <canvas> wird jetzt INVALID_STATE_ERR geworfen.
  • Beim Aufrufen von drawImage() mit unendlichen Koordinaten wird keine Ausnahme mehr geworfen.
  • Die toDataURL()-Methode akzeptiert jetzt ein zweites Argument zur Steuerung der JPEG-Qualität.
  • Die Unterstützung für die nicht standardmäßigen globalCompositeOperation-Operationen clear und over wurde entfernt.
  • Schatten werden jetzt nur noch für source-over-Kompositionsoperationen gezeichnet.
  • Sie können nun die Füllregel des Canvas konfigurieren, indem Sie das mozFillRule-Attribut im Kontext setzen.
  • Unterstützung für die experimentellen mozDash, mozDashOffset, mozCurrentTransform und mozCurrentTransformInverse Attribute wurde hinzugefügt.
  • Die Unterstützung für die nicht standardmäßigen Methoden mozDrawText(), mozMeasureText(), mozPathText() und mozTextAlongPath() wurde entfernt.

CSS

  • text-overflow wird jetzt unterstützt.
  • Die -moz-orient Eigenschaft wurde so korrigiert, dass <progress>-Elemente, die vertikal ausgerichtet sind, angemessene Standardabmessungen haben.

MathML

  • XLink href wurde wiederhergestellt und das MathML3 href-Attribut wird jetzt unterstützt. Entwicklern wird empfohlen, zur letztgenannten Syntax zu wechseln.
  • Unterstützung für das voffset-Attribut auf <mpadded>-Elementen wurde hinzugefügt und das Verhalten des lspace-Attributs wurde korrigiert.
  • Das oberste <math>-Element akzeptiert nun alle Attribute des <mstyle>-Elements.
  • Unterstützung für Asana Math Schriftarten wurde hinzugefügt.
  • Die medium Linienstärke der Bruchstriche in <mfrac>-Elementen wurde korrigiert, um mit der Standarddicke übereinzustimmen.
  • Namen für negative Abstände werden jetzt unterstützt.

DOM

  • Die nicht standardmäßigen Methoden getAsBinary(), getAsDataURL() und getAsText() der File-Schnittstelle sowie die nicht standardmäßigen Eigenschaften fileName und fileSize wurden entfernt (Firefox-Bug 661876).
  • Die FormData-Schnittstelle meldet nicht mehr den Dateinamen als leeren String, wenn die Content-Disposition HTTP-Header gesendet werden, falls die Daten mit einem Blob gesetzt wurden. Dies behebt Fehler, die bei einigen Servern auftraten.
  • Die HTMLelement.dir-Eigenschaft gibt ihr Ergebnis jetzt immer in Kleinschreibung zurück, wie es von der HTML-Spezifikation gefordert wird.
  • Die FileReader readAsArrayBuffer()-Methode ist jetzt implementiert.
  • Document.createEntityReference wurde entfernt. Es wurde nie richtig implementiert und auch in den meisten anderen Browsern nicht.
  • document.normalizeDocument wurde entfernt. Verwenden Sie stattdessen Node.normalize.
  • DOMTokenList.item gibt jetzt undefined zurück, wenn der index außerhalb des Bereichs liegt, vorher wurde null zurückgegeben.
  • Node.getFeature wurde entfernt.
  • Die HTMLInsElement- und HTMLDelElement-Schnittstellen wurden entfernt, da die <ins> und <del> Elemente tatsächlich die HTMLModElement Schnittstelle verwenden.
  • Im Bestreben, sich an die kommende DOM4-Spezifikation zu halten, bei der Attr nicht mehr von Node erben (wie es in DOM Core 1, 2 und 3 der Fall war), melden viele Node-Eigenschaften und Methoden auf der Attr-Schnittstelle jetzt Warnungen, da wir daran arbeiten, sie in einer späteren Version zu entfernen.
  • Unterstützung für die ondeviceorientation und ondevicemotion Eigenschaften auf window Objekten wurde hinzugefügt.
  • window.resizeTo, window.resizeBy, window.moveTo und window.moveBy gelten nicht mehr für das Hauptfenster.

JavaScript

  • Die Function.arity-Eigenschaft wurde entfernt; verwenden Sie stattdessen Function.length.

WebSockets

  • Die network.websocket.max-connections-Einstellung wird verwendet, um die maximale Anzahl von WebSocket-Verbindungen zu bestimmen, die gleichzeitig geöffnet sein können. Der Standardwert ist 200.
  • Die zugrunde liegende WebSocket-Protokollversion 8 (wie von IETF-Entwurf 10 festgelegt) wird jetzt anstelle der in Firefox 6 verwendeten Version 7 verwendet.
  • Die WebSocket-API ist jetzt auf Firefox Mobile verfügbar.

console API

  • Die mit console.log protokollierten Nachrichten, während die Webkonsole nicht geöffnet ist, werden weiterhin protokolliert, auch wenn 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

Änderungen für Mozilla- und Add-on-Entwickler

Diese Änderungen betreffen Add-on-Entwickler sowie Entwickler, die an Mozilla-Code selbst oder mit diesem arbeiten. Add-on-Entwickler sollten Erweiterungen für Firefox 7 aktualisieren für weitere Informationen einsehen.

Hinweis: Firefox 7 erfordert, dass binäre Komponenten neu kompiliert werden, wie alle wichtigen Veröffentlichungen von Firefox.

JavaScript-Code-Module

FileUtils.jsm

  • Die 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 während des Anwendungsstarts geändert wurden: AddonManager.addStartupChange(), AddonManager.removeStartupChange() und AddonManager.getStartupChanges().

XUL

  • <tree>-Elemente können jetzt den Zustand von Offenlege-Dreiecken beibehalten, wenn die von datasources referenzierten Knoten alle eindeutige IDs aufweisen, die durch "id"-Attribute angegeben sind.
  • <panel>-Elemente können jetzt so konfiguriert werden, dass der Benutzer sie durch Klicken irgendwo auf deren Hintergrund ziehen kann, indem das neue backdrag-Attribut verwendet wird.

XPCOM

  • Die neue Components.utils.schedulePreciseGC()-Methode ermöglicht es Ihnen, einen gründlichen Garbage-Collection-Zyklus zu einem späteren Zeitpunkt zu planen, wenn kein JavaScript-Code ausgeführt wird; ein Callback wird ausgeführt, sobald die Sammlung abgeschlossen ist.
  • Die Components.utils.unload()-Methode ermöglicht es Ihnen, JavaScript-Code-Module, die zuvor durch Aufrufen von Components.utils.load() geladen wurden, zu entladen.

Speicher-Reporter

Unterstützung für Multi-Reporter wurde hinzugefügt; das heißt Speicher-Reporter, die Daten auf Anfrage sammeln und für jedes generierte Ergebnis einen Callback aufrufen. Siehe nsIMemoryMultiReporter und nsIMemoryMultiReporterCallback für die relevanten Schnittstellen sowie die nsIMemoryReporterManager.registerMultiReporter() und nsIMemoryReporterManager.unregisterMultiReporter() Methoden.

Änderungen an der Benutzeroberfläche

  • Erweiterungsoptionen können jetzt innerhalb des Add-on-Managers sowohl für Neustart-freie als auch traditionelle Erweiterungen angezeigt werden.
  • Der Zielort von Downloads wird jetzt seitenweise gespeichert. Auf diese Daten kann mit DownloadLastDir.jsm zugegriffen 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 unter Windows bauen.

Schnittstellenänderungen

  • nsISocketTransport bietet jetzt eine neue Verbindungs-Flag: DISABLE_IPV6; dies führt dazu, dass ein Socket nur versucht, sich mit IPv4-Adressen zu verbinden und alle verfügbaren IPv6-Adressen ignoriert. Darüber hinaus bietet nsIDNSService jetzt eine neue Auflösungs-Flag: RESOLVE_DISABLE_IPV6; dies führt dazu, dass die Domain-Name-Auflösung nur IPv4-Hosts berücksichtigt und alle verfügbaren IPv6-Adressen ignoriert. Diese Änderungen werden verwendet, um die "happy eyeballs"-Strategie zur Verbesserung der Antwortzeit zu implementieren, wenn versucht wird, sich auf Hosts zu verbinden, die sowohl IPv4 als auch IPv6 unterstützen (insbesondere diejenigen, die eine fehlerhafte IPv6-Konnektivität haben).
  • inIDOMUtils hat zwei neue Methoden, inIDOMUtils.getChildrenForNode(), die eine Liste der Kindknoten eines Knotens zurückgibt, und inIDOMUtils.getUsedFontFaces(), die eine Liste der Schriftarten zurückgibt, die in einem Bereich verwendet werden.
  • Die nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH-Schnittstelle wurde in die nsIMarkupDocumentViewer-Schnittstelle zusammengeführt.
  • Die nsIDOMWindow2-Schnittstelle wurde in die nsIDOMWindow-Schnittstelle zusammengeführt.
  • Die nsIDOMWindow_2_0_BRANCH-Schnittstelle wurde in die nsIDOMWindowInternal-Schnittstelle zusammengeführt.
  • nsINavHistoryObserver-Methoden mit URI-Parametern benötigen jetzt auch eine GUID.
  • Die nsISHistory_2_0_BRANCH-Schnittstelle wurde in die nsISHistory-Schnittstelle zusammengeführt.
  • nsITelemetry hat eine neue Methode, nsITelemetry.getHistogramById(), die ein Histogramm anhand seiner ID zurückgibt, und ein neues Attribut, canRecord, das, wenn es auf false gesetzt ist, die Erfassung von Telemetrie-Statistiken deaktiviert. Telemetrische Statistiken werden nicht mehr aufgezeichnet, wenn der Private Browsing-Modus aktiviert ist. (siehe Firefox-Bug 661574 und Firefox-Bug 661573) Telemetrie-Histogramme, die mit nsITelemetry.newHistogram() definiert wurden, werden im Telemetrie-Ping nicht gemeldet.
  • Die nsIMemoryReporter-Schnittstelle wurde erheblich verändert; wenn Sie sie verwenden, müssen Sie einige Anpassungen an Ihrem Code vornehmen.
  • nsIXMLHttpRequest, Header, die durch nsIXMLHttpRequest.setRequestHeader() gesetzt werden, werden bei einer Weiterleitung zusammen mit der Anfrage gesendet. Bisher wurden diese Header nicht gesendet.
  • nsIDocShell hat ein neues allowWindowControl-Attribut. Wenn true, darf der Inhalt des Docshells das Fenster steuern (also das Fenster bewegen oder die Größe ändern).
  • Die nsIThreadInternal2-Schnittstelle wurde in die nsIThreadInternal-Schnittstelle zusammengeführt.

Neue Schnittstellen

nsIDOMFontFace

Beschreibt einen einzigen Schriftschnitt.

nsIDOMFontFaceList

Beschreibt eine Liste von Schriftschnitten, von denen jeder durch nsIDOMFontFace repräsentiert wird.

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 Themes beeinflussen.
  • Das Aussehen des Druckvorschaufensters wurde modernisiert und Theme-Autoren werden ermutigt, es mit den CSS-Pseudo-Elementen ::-moz-page, ::-moz-page-sequence und ::-moz-scrolled-page-sequence zu stylen.

Siehe auch