Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Firefox 8 Versionshinweise für Entwickler

Firefox 8 wurde am 8. November 2011 veröffentlicht. Dieser Artikel bietet Informationen sowohl für Webentwickler als auch für Add-On- und Mozilla-Projektentwickler, um die Funktionen dieser Veröffentlichung voll auszuschöpfen.

Änderungen für Webentwickler

HTML

  • Die HTMLImageElement crossOrigin-Eigenschaft wurde hinzugefügt und das crossorigin-Attribut wurde dem <img>-Element hinzugefügt. (siehe Firefox-Bug 664299)
  • Die Methode HTMLSelectElement.add() unterstützt nun entweder ein Element oder den Index eines Elements, vor dem das neue Element eingefügt werden soll. Zuvor unterstützte es nur ein Element. (siehe Firefox-Bug 666200)
  • Der HTMLIsIndexElement-Konstruktor wurde entfernt. Keine Elemente haben diese Schnittstelle seit vor Firefox 4 implementiert.
  • Die HTML5-"Kontextmenü"-Funktion (contextmenu-Attribut), die es ermöglicht, spezifische benutzerdefinierte Elemente zum nativen Kontextmenü hinzuzufügen, wird nun unterstützt (die Implementierung ist noch experimentell und wartet auf Änderungen in der Spezifikation; siehe Firefox-Bug 617528).
  • Unterstützung für das HTMLElement.accessKeyLabel-Attribut wurde für alle Elemente hinzugefügt.
  • Die <input> und <textarea> Elemente unterstützen nun das selectionDirection-Attribut, und ihre setSelectionRange()-Methoden wurden aktualisiert, um optional eine Richtung zu spezifizieren.
  • Bei den meisten Elementen wird nun ein Focus-Ring darum gezeichnet, wenn sie durch das tabindex-Attribut fokussierbar gemacht wurden und der Benutzer dann das Element fokussiert.
  • In einem Satz verschachtelter <label>-Elemente lösen Klickereignisse nicht länger mehrere <label>-Elemente aus, was dazu führte, dass Firefox in der Vergangenheit nicht mehr reagierte (siehe Firefox-Bug 646157).

DOM

  • Die Methode insertAdjacentHTML wurde implementiert.
  • BlobBuilder hat jetzt eine getFile()-Methode, die den Inhalt des Blobs als Datei zurückgibt.
  • Die Schnittstelle FileReaderSync (Teil der FileAPI) wurde implementiert.
  • Das Ereignishandling in verschachtelten <label>s wurde behoben.
  • Sie können jetzt window.postMessage() verwenden, um File und FileList Objekte zwischen Fenstern zu übergeben.
  • Beim Bearbeiten von contenteditable-Bereichen kehren Sie beim Verlassen einer Überschrift durch Drücken der Eingabetaste oder beim Verlassen des Listeneditiervorgangs durch zweimaliges Drücken der Eingabetaste zu einem Absatzbearbeitungsmodus zurück (d.h. Absätze innerhalb von <p>-Blöcken), anstatt Zeilen durch <br>-Elemente zu trennen.
  • Ein Fehler wurde behoben, der verhinderte, dass Justierung ordnungsgemäß wirksam wird, wenn sie auf die erste Zeile in einem contenteditable-Bereich angewendet wurde.
  • Ein Fehler wurde behoben, der das Drücken der Entfernen- oder Rückschritttaste am Anfang eines contenteditable-Bereichs auf den vorherigen contenteditable-Block wirken ließ, falls vorhanden.
  • Document.getSelection() gibt nun dasselbe Selection-Objekt zurück wie window.getSelection(), anstatt es zu stringify.
  • Die HTML5-Eigenschaft selectionDirection ermöglicht es, die Richtung der Auswahl in einem editierbaren Text zu definieren.
  • HTMLMediaElement hat jetzt eine seekable-Eigenschaft, die ein TimeRanges-Objekt zurückgibt.
  • Das HTMLMediaElement.preload-Attribut spiegelt nun korrekt als enumerierten Wert wider.
  • Die crossOrigin-Eigenschaft standardmäßig auf "Anonymous", wenn ein ungültiger Wert verwendet wird.
  • navigator.cookieEnabled gibt nun korrekte Informationen zurück, wenn die Standardeinstellung für Cookies auf Basis einzelner Seiten überschrieben wird.

JavaScript

  • RegExp.exec() und RegExp.test(), die ohne Argumente aufgerufen werden, stimmen jetzt mit dem String "undefined" überein.
  • String.search() und String.match(), die ohne Argumente oder undefined aufgerufen werden, passen nun mit dem leeren String und somit zu allen Strings.
  • Unterstützung für Beobachtungslisten wurde mit den neuen (nicht standardisierten) Methoden watch() und unwatch() implementiert.

CSS

  • <resolution> akzeptiert nun <number>, nicht nur <integer> Werte gemäß der Spezifikation.
  • Silbentrennungregeln für viele neue Sprachen wurden beim Einsatz von hyphens hinzugefügt.
  • Die Handhabung von background-size wurde überarbeitet, um der Spezifikation näher zu kommen.
  • In der Vergangenheit hatte text-decoration im Quirks-Modus eine angepasste Linienstärke und Position auf untergeordnetem Text, um dem untergeordneten Element zu entsprechen. Jetzt ist die Darstellung im Standardmodus und im Quirksmodus ähnlicher.
  • Die horizontale Positionierung für Elemente wurde in vielen Fällen näher an die Spezifikation gebracht. Dokumentation dazu folgt noch, aber vorerst siehe Firefox-Bug 682780, Kommentar 23 für Einzelheiten.
  • SVG-Bilder werden jetzt richtig skaliert wenn sie als Hintergrundbilder verwendet werden.

Netzwerk

  • Doppelte Anführungszeichen werden nicht mehr als Trennzeichen für RFC 2231 oder RFC 5987-Kodierung akzeptiert, gemäß diesen RFCs.
  • Der MIME-Headerfeld-Parser (Content-Disposition) erfordert nun "=" in den Parametern.
  • Skripte werden nicht mehr heruntergeladen, wenn JavaScript deaktiviert ist.
  • SSL 2.0 wird nicht mehr unterstützt.

WebSockets

  • Die WebSocket-Objektmethode send() gibt nun nicht mehr fälschlicherweise einen Booleschen Wert zurück.
  • Die WebSocket-Objektmethode close() stimmt jetzt mit dem aktuellen Entwurf des Standards überein, und Schließungsereignisse verwenden nun korrekt die CloseEvent-Schnittstelle.
  • Das WebSocket-Objekt extensions-Attribut wird nun unterstützt.
  • Der WebSocket-Konstruktor unterstützt nun ein Array von Protokollen sowie einen einzelnen Protokollstring.
  • Gemischter Inhalt ist mit WebSockets nicht erlaubt; das heißt, Sie können keine Verbindung zu einem nicht sicheren WebSocket-Server von sicherem Inhalt aus herstellen.
  • Verbindungsfehler mit WebSockets lösen nun den onerror-Handler aus.
  • WebSocket-API wurde auf den neuesten Entwurf der Spezifikation aktualisiert (siehe Firefox-Bug 674890, Firefox-Bug 674527 und Firefox-Bug 674716).
  • Die deflate-stream-Erweiterung für WebSockets wurde deaktiviert; sie wurde abgelehnt und brach die Kompatibilität mit einigen Seiten.

WebGL

  • Cross-Domain-Texturen können nun mit CORS-Zustimmung erlaubt sein.
  • Cross-Prozess-Rendering mit Direct2D/Direct3D 10.

MathML

  • Unterstützung für das displaystyle-Attribut auf dem obersten <math>-Element wurde hinzugefügt.
  • Die Auslegung negativer Zeilennummern für das align-Attribut auf <mtable> wurde korrigiert.

Entwicklerwerkzeuge

  • Das console-Objekt hat eine neue dir()-Methode, die eine interaktive Liste der Eigenschaften eines angegebenen Objekts anzeigt.

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

Siehe Aktualisieren von Add-ons für Firefox 8 für einen Leitfaden zu den Änderungen, die Sie wahrscheinlich vornehmen müssen, um Ihre Add-ons mit Firefox 8 kompatibel zu machen.

Hinweis: Firefox 8 erfordert, dass binäre Komponenten neu kompiliert werden, wie alle Hauptversionen von Firefox.

XPCOM

Components.utils

Die neuen Methoden Components.utils.createObjectIn() und Components.utils.makeObjectPropsNormal() wurden erstellt, um das Erstellen von Objekten in speziellen Kompartimenten zu erleichtern.

Andere XPCOM-bezogene Änderungen

  • Sie können nun DOM File-Objekte aus Komponentencode instanziieren, indem Sie new File verwenden, anstatt ein nsIDOMFile direkt zu instanziieren.
  • Der nsTPtrArray-Arraytyp wurde entfernt. Seine Funktionalität ist nun vollständig auf nsTArray verfügbar, das nun die SafeElementAt()-Methode bietet, wenn es mit einem Zeigertyp instanziiert wird.

Workers

Es ist nicht mehr möglich, auf XPCOM-Objekte von ChromeWorkers aus zuzugreifen. XPConnect wurde in Worker-Kontexten deaktiviert seit Firefox-Bug 649537.

XUL

  • Ein Fehler in document.execCommand(), der auftrat, wenn er auf den Wert von contentDocument aufgerufen wurde, wurde behoben. Seit Firefox 3 führte dies zu Fehlern, anstatt korrekt zu funktionieren.
  • Bootstrapped-Addons können nun Chrome mit einer chrome.manifest-Datei laden.
  • XUL-Bilder schrumpfen jetzt mit dem gleichen Verhältnis in beiden Richtungen, wenn maximale Größen angegeben sind.

Änderungen am Build-System

  • Die folgenden Build-Konfigurationsoptionen wurden entfernt:

    • --enable-timeline
    • --disable-storage
    • --necko-disk-cache
  • Beim Kompilieren von IDL-Dateien zu Headern wird die Headerdatei jspubtd.h bei Bedarf automatisch inkludiert. Manuelle Inklusionen von jspubtd.h und/oder jsapi.h in IDL-Dateien, die jsval oder [implicit_jscontext] verwenden, sind nicht mehr notwendig.

Chrome-Registrierung

  • Das platformversion-Flag kann im chrome.manifest verwendet werden, um die Gecko-Version-Kompatibilität anzugeben.

Schnittstellenänderungen

  • Die Methode mozIJSSubScriptLoader.loadSubScript() lädt nun Skripte aus dem Startcache, wenn möglich.
  • Das ownerWindow-Attribut wurde aus der nsIAccessNode-Schnittstelle entfernt.
  • Die nsIDOMStorageWindow-Schnittstelle wurde in die nsIDOMWindow-Schnittstelle integriert.
  • Alle Mitglieder der nsIDOMWindowInternal-Schnittstelle wurden in die nsIDOMWindow-Schnittstelle verschoben. Die Schnittstelle selbst (ohne Mitglieder) bleibt zur Kompatibilität bis Firefox 9 verfügbar.
  • Um die Leistung zu verbessern, wurde das Callback-Handling für asynchrone Places-Datenbank-Updates geändert. Siehe die neuen Methoden mozIVisitInfoCallback.handleResult() und mozIVisitInfoCallback.handleError(), die die alte Einzelmethode für sowohl Fehler- als auch Erfolgskonditionshandhabung ersetzen.
  • Das KIND_MAPPED-Attribut des nsIMemoryReporter wurde zugunsten von KIND_NONHEAP veraltet, neue Einheitentypen UNITS_COUNT_CUMULATIVE und UNITS_PERCENTAGE wurden hinzugefügt.
  • Die nsIMemoryReporterManager-Schnittstelle hat ein neues explicit-Attribut, das die Gesamtgröße expliziter Speicherzuweisungen meldet.
  • Die nsIMemoryReporterManager-Schnittstelle hat ein neues resident-Attribut, das die Menge an genutztem physikalischem Speicher meldet.
  • Die nsINetworkLinkService-Schnittstelle hat ein neues Attribut, linkType. Dieses Attribut gibt den Typ der Netzwerkverbindung an, die verwendet wird. Alle Betriebssysteme geben derzeit LINK_TYPE_UNKNOWN zurück. Android-Unterstützung wurde wegen wahrgenommener Sicherheitsbedenken zurückgezogen.
  • Die nsISelection2-Schnittstelle wurde in die nsISelectionPrivate-Schnittstelle integriert.
  • Die nsISelection3-Schnittstelle wurde in die nsISelection-Schnittstelle integriert.
  • Das nsISessionStartup-Attribut state ist nun ein jsval statt eines Strings, aus Leistungsgründen.
  • Das nsIDocShell-Attribut isActive ist nun false für minimierte Fenster.
  • Die Methode nsIDownloadHistory.addDownload() speichert nun das Ziel, wo der Download auf dem lokalen Dateisystem gespeichert wird.

Entfernte Schnittstellen

Die folgenden Schnittstellen waren Implementierungsdetails, die nicht mehr benötigt werden:

  • nsITimelineService
  • nsIDOMHTMLIsIndexElement

Die nsIWorkerFactory-Schnittstelle wurde ebenfalls entfernt. Workers können weiterhin mit den Konstruktoren Worker und ChromeWorker erstellt werden.

Andere Änderungen

  • Wenn ein Fenster minimiert, wiederhergestellt oder zwischen Vollbild- und Fenstermodus umschaltet, erhält es ein sizemodechange-Ereignis.
  • Sie können jetzt die extensions.autoDisableScopes-Einstellung verwenden, um die automatische Installation von Add-ons von bestimmten Add-on-Installationsorten zu deaktivieren.
  • Die neue mozSyntheticDocument-Eigenschaft bei Document-Objekten lässt Sie bestimmen, ob ein Dokument synthetisch ist (d.h. etwas wie ein eigenständiges Bild, Video oder Audio-Datei) anstatt ein vollständiges, standardmäßiges DOM-Dokument. Dies kann nützlich sein, wenn Sie beispielsweise in dieser Situation eine andere Benutzeroberfläche präsentieren möchten (wie etwa das Hinzufügen kontextueller Elemente je nach Fall unterschiedlich).
  • Sie können nun einen Filter angeben, wenn Sie about:config öffnen; zum Beispiel zeigt about:config?filter=sessionstore nur sitzungsbezogene Präferenzen an.