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
HTMLImageElementcrossOrigin-Eigenschaft wurde hinzugefügt und dascrossorigin-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 dasselectionDirection-Attribut, und ihresetSelectionRange()-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
insertAdjacentHTMLwurde implementiert. BlobBuilderhat jetzt einegetFile()-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, umFileundFileListObjekte 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 vorherigencontenteditable-Block wirken ließ, falls vorhanden. Document.getSelection()gibt nun dasselbeSelection-Objekt zurück wiewindow.getSelection(), anstatt es zu stringify.- Die HTML5-Eigenschaft
selectionDirectionermöglicht es, die Richtung der Auswahl in einem editierbaren Text zu definieren. HTMLMediaElementhat jetzt eineseekable-Eigenschaft, die einTimeRanges-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.cookieEnabledgibt nun korrekte Informationen zurück, wenn die Standardeinstellung für Cookies auf Basis einzelner Seiten überschrieben wird.
JavaScript
RegExp.exec()undRegExp.test(), die ohne Argumente aufgerufen werden, stimmen jetzt mit dem String "undefined" überein.String.search()undString.match(), die ohne Argumente oderundefinedaufgerufen 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()undunwatch()implementiert.
CSS
<resolution>akzeptiert nun<number>, nicht nur<integer>Werte gemäß der Spezifikation.- Silbentrennungregeln für viele neue Sprachen wurden beim Einsatz von
hyphenshinzugefügt. - Die Handhabung von
background-sizewurde überarbeitet, um der Spezifikation näher zu kommen. - In der Vergangenheit hatte
text-decorationim 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-Objektmethodesend()gibt nun nicht mehr fälschlicherweise einen Booleschen Wert zurück. - Die
WebSocket-Objektmethodeclose()stimmt jetzt mit dem aktuellen Entwurf des Standards überein, und Schließungsereignisse verwenden nun korrekt dieCloseEvent-Schnittstelle. - Das
WebSocket-Objektextensions-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
Entwicklerwerkzeuge
- Das
console-Objekt hat eine neuedir()-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()undComponents.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 einnsIDOMFiledirekt zu instanziieren. - Der
nsTPtrArray-Arraytyp wurde entfernt. Seine Funktionalität ist nun vollständig aufnsTArrayverfügbar, das nun dieSafeElementAt()-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 voncontentDocumentaufgerufen 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.hbei Bedarf automatisch inkludiert. Manuelle Inklusionen vonjspubtd.hund/oderjsapi.hin 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 dernsIAccessNode-Schnittstelle entfernt. - Die
nsIDOMStorageWindow-Schnittstelle wurde in diensIDOMWindow-Schnittstelle integriert. - Alle Mitglieder der
nsIDOMWindowInternal-Schnittstelle wurden in diensIDOMWindow-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()undmozIVisitInfoCallback.handleError(), die die alte Einzelmethode für sowohl Fehler- als auch Erfolgskonditionshandhabung ersetzen. - Das
KIND_MAPPED-Attribut desnsIMemoryReporterwurde zugunsten vonKIND_NONHEAPveraltet, neue EinheitentypenUNITS_COUNT_CUMULATIVEundUNITS_PERCENTAGEwurden hinzugefügt. - Die
nsIMemoryReporterManager-Schnittstelle hat ein neuesexplicit-Attribut, das die Gesamtgröße expliziter Speicherzuweisungen meldet. - Die
nsIMemoryReporterManager-Schnittstelle hat ein neuesresident-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 derzeitLINK_TYPE_UNKNOWNzurück. Android-Unterstützung wurde wegen wahrgenommener Sicherheitsbedenken zurückgezogen. - Die
nsISelection2-Schnittstelle wurde in diensISelectionPrivate-Schnittstelle integriert. - Die
nsISelection3-Schnittstelle wurde in diensISelection-Schnittstelle integriert. - Das
nsISessionStartup-Attributstateist nun einjsvalstatt eines Strings, aus Leistungsgründen. - Das
nsIDocShell-AttributisActiveist nunfalsefü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:
nsITimelineServicensIDOMHTMLIsIndexElement
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 beiDocument-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 zeigtabout:config?filter=sessionstorenur sitzungsbezogene Präferenzen an.