Firefox 8 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 Version voll auszuschöpfen.
Änderungen für Webentwickler
HTML
- Die
crossOrigin
-Eigenschaft desHTMLImageElement
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 wurde nur ein Element unterstützt. (siehe Firefox-Bug 666200) - Der Konstruktor
HTMLIsIndexElement
wurde entfernt. Keine Elemente haben diese Schnittstelle seit vor Firefox 4 implementiert. - Das "Kontextmenü"-Feature von HTML5 (
contextmenu
-Attribut), das es Ihnen ermöglicht, benutzerdefinierte, elementspezifische Einträge zum nativen Kontextmenü hinzuzufügen, wird jetzt 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 jetzt dasselectionDirection
Attribut, und ihresetSelectionRange()
Methoden wurden aktualisiert, um optional eine Richtung anzugeben. - Die meisten Elemente haben jetzt einen Fokusring um sich herum, wenn sie mithilfe des
tabindex
Attributs fokussierbar gemacht wurden und der Benutzer das Element dann fokussiert. - In einem Satz verschachtelter
<label>
Elemente lösen Klickereignisse nicht mehr mehrere <label>-Elemente aus, was in der Vergangenheit dazu geführt hat, dass Firefox nicht mehr reagierte (siehe Firefox-Bug 646157).
DOM
- Die Methode
insertAdjacentHTML
wurde implementiert. BlobBuilder
hat jetzt einegetFile()
-Methode, die den Inhalt des Blobs als Datei zurückgibt.- Die
FileReaderSync
Schnittstelle (Teil von FileAPI) wurde implementiert. - Die Ereignisbehandlung von verschachtelten
<label>
s wurde behoben. - Sie können jetzt
window.postMessage()
verwenden, umFile
undFileList
Objekte zwischen Fenstern zu übergeben. - Beim Bearbeiten von
contenteditable
Bereichen wird beim Verlassen einer Überschrift durch Drücken der Eingabetaste oder beim zweimaligen Drücken der Eingabetaste zum Verlassen des Listenbearbeitungsmodus jetzt wieder in den Absatzmodus (also Absätze innerhalb von<p>
Blöcken) zurückgekehrt, anstatt Zeilen durch<br>
Elemente zu trennen. - Ein Fehler wurde behoben, der verhinderte, dass die Ausrichtung beim ersten Zeilenumbruch in einem
contenteditable
Bereich richtig wirksam wurde. - Ein Fehler wurde behoben, der das Löschen oder Zurücksetzen am Anfang eines
contenteditable
Bereichs auf den vorhergehendencontenteditable
Block auswirkte, falls einer vorhanden ist. Document.getSelection()
gibt jetzt dasselbeSelection
-Objekt zurück wiewindow.getSelection()
, anstatt es zu stringifizieren.- Die HTML5
selectionDirection
-Eigenschaft ermöglicht es, die Richtung der Auswahl in einem editierbaren Text zu definieren. HTMLMediaElement
hat jetzt eineseekable
Eigenschaft, die einTimeRanges
Objekt zurückgibt.- Das
HTMLMediaElement.preload
Attribut spiegelt jetzt korrekt als enumerierter Wert wider. - Die
crossOrigin
Eigenschaft stellt standardmäßig auf "Anonymous" ein, wenn ein ungültiger Wert verwendet wird. navigator.cookieEnabled
gibt jetzt die korrekten Informationen zurück, wenn die Standardeinstellung für Cookies auf einer pro-Website-Basis überschrieben wird.
JavaScript
RegExp.exec()
undRegExp.test()
, die ohne Argumente aufgerufen werden, prüfen jetzt den String "undefined".String.search()
undString.match()
, die ohne Argumente oderundefined
aufgerufen werden, prüfen jetzt den leeren String und passen somit auf jeden String.- Unterstützung für Beobachtungslisten wurde mit den neuen (nicht standardmäßigen) Methoden
watch()
undunwatch()
implementiert.
CSS
<resolution>
akzeptiert jetzt<number>
, nicht nur<integer>
Werte gemäß Spezifikation.- Silbentrennungsregeln wurden für viele neue Sprachen hinzugefügt, wenn
hyphens
verwendet wird. - Die Behandlung von
background-size
wurde überarbeitet, um die Spezifikation besser zu erfüllen. - In der Vergangenheit wurde
text-decoration
im Quirks-Modus angepasst, um die Linienstärke und -position an darunter liegende Texte anzupassen. Jetzt sind Standardmodus und Quirks-Modus im Rendering ähnlicher. - Die horizontale Positionierung für Elemente wurde in vielen Fällen mehr an die Spezifikation angepasst. Die Dokumentation hierfür steht noch aus, siehe jedoch für Details Firefox-Bug 682780, Kommentar 23.
- SVG-Bilder werden jetzt korrekt 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-Headerfeldparser (
Content-Disposition
) erfordert nun "=" in Parametern. - Skripte werden nicht mehr heruntergeladen, wenn JavaScript deaktiviert ist.
- SSL 2.0 wird nicht mehr unterstützt.
WebSockets
- Die Methode
send()
desWebSocket
Objekts liefert nicht mehr fälschlicherweise einen booleschen Wert zurück. - Die Methode
close()
desWebSocket
Objekts entspricht jetzt dem aktuellen Entwurf des Standards, und Schließereignisse verwenden jetzt korrekt dasCloseEvent
Interface. - Das
extensions
Attribut desWebSocket
Objekts wird jetzt unterstützt. - Der WebSocket-Konstruktor unterstützt jetzt sowohl ein Array von Protokollen als auch einen einzelnen Protokoll-String.
- Mixed Content ist bei 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 jetzt den
onerror
-Handler aus. - Die 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 veraltet und verursachte Kompatibilitätsprobleme mit einigen Websites.
WebGL
- CORS genehmigte Cross-Domain-Texturen können jetzt zugelassen werden.
- Cross-Process-Rendering mit Direct2D/Direct3D 10.
MathML
Entwicklertools
- Das
console
Objekt hat eine neuedir()
Methode, die eine interaktive Liste der Eigenschaften eines bestimmten Objekts anzeigt.
Änderungen für Mozilla- und Add-on-Entwickler
Sehen Sie sich Aktualisieren von Add-ons für Firefox 8 an, um eine Anleitung zu Änderungen zu finden, die Sie wahrscheinlich vornehmen müssen, um Ihre Add-ons mit Firefox 8 kompatibel zu machen.
Hinweis: Firefox 8 erfordert das erneute Kompilieren von Binärkomponenten, wie bei allen größeren Releases von Firefox.
XPCOM
Components.utils
-
Die neuen Methoden
Components.utils.createObjectIn()
undComponents.utils.makeObjectPropsNormal()
wurden erstellt, um das Erstellen von Objekten in bestimmten Bereichen zu erleichtern.
Weitere XPCOM-bezogene Änderungen
- Sie können jetzt DOM
File
Objekte aus Komponentencode instanziieren, indem Sie new File verwenden, anstatt direkt einnsIDOMFile
zu instanziieren. - Der Array-Typ
nsTPtrArray
wurde entfernt. Dessen Funktionalität ist jetzt vollständig aufnsTArray
verfügbar, das jetzt die MethodeSafeElementAt()
bietet, wenn es unter Verwendung eines Zeigertyps instanziiert wird.
Workers
Es ist nicht mehr möglich, auf XPCOM-Objekte aus ChromeWorkers zuzugreifen. XPConnect wurde in Worker-Kontexten deaktiviert gemäß Firefox-Bug 649537.
XUL
- Ein Fehler in
document.execCommand()
, der beim Aufruf auf den Wert voncontentDocument
auftrat, wurde behoben. Seit Firefox 3 führte dies zu Fehlern anstatt korrekt zu funktionieren. - Bootstrap-Add-ons können jetzt Chrome mithilfe einer
chrome.manifest
-Datei laden. - XUL-Bilder schrumpfen jetzt im gleichen Verhältnis in beide Richtungen bei der Angabe maximaler Größen.
Ä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 Header-Datei
jspubtd.h
automatisch einbezogen, wenn erforderlich. Manuelle Einfügungen vonjspubtd.h
und/oderjsapi.h
in IDL-Dateien, die jsval oder [implicit_jscontext] verwenden, sind nicht mehr erforderlich.
Chrome-Registrierung
- Das
platformversion
-Flag kann in der chrome.manifest verwendet werden, um die Gecko-Versionskompatibilität anzugeben.
Schnittstellenänderungen
- Die Methode
mozIJSSubScriptLoader.loadSubScript()
lädt jetzt Scripts 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 die Callback-Verarbeitung für asynchrone Places-Datenbank-Updates geändert. Siehe die neuen Methoden
mozIVisitInfoCallback.handleResult()
undmozIVisitInfoCallback.handleError()
, die die alte Einzelmethode für beide Fehler- und Erfolgsbedingungen ersetzen. - Das
KIND_MAPPED
Attribut vonnsIMemoryReporter
wurde zugunsten vonKIND_NONHEAP
veraltet, neue EinheitstypenUNITS_COUNT_CUMULATIVE
undUNITS_PERCENTAGE
wurden 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 des genutzten physischen Speichers meldet. - Die
nsINetworkLinkService
Schnittstelle hat ein neues AttributlinkType
. Dieses Attribut gibt den Typ der verwendeten Netzwerkverbindung an. Alle Betriebssysteme geben derzeitLINK_TYPE_UNKNOWN
zurück. Die Android-Unterstützung wurde aufgrund wahrgenommener Sicherheitsbedenken zurückgezogen. - Die
nsISelection2
Schnittstelle wurde in diensISelectionPrivate
Schnittstelle integriert. - Die
nsISelection3
Schnittstelle wurde in diensISelection
Schnittstelle integriert. - Das
nsISessionStartup
Attribut state ist jetzt einjsval
anstatt eines Strings, aus Leistungsgründen. - Das
nsIDocShell
AttributisActive
ist jetztfalse
für minimierte Fenster. - Die Methode
nsIDownloadHistory.addDownload()
speichert jetzt das Ziel, wo der Download im 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 Worker
und ChromeWorker
Konstruktoren erstellt werden.
Weitere Änderungen
- Wenn ein Fenster minimiert, wiederhergestellt oder zwischen Vollbild- und Fenstermodus umschaltet, erhält es ein
sizemodechange
Ereignis. - Sie können jetzt die Präferenz
extensions.autoDisableScopes
verwenden, um die automatische Installation von Add-ons aus bestimmten Add-on-Installationsorten zu deaktivieren. - Die neue
mozSyntheticDocument
Eigenschaft aufDocument
Objekten lässt Sie bestimmen, ob ein Dokument synthetisch ist (d.h. etwas wie ein eigenes Bild, Video oder Audiodatei) anstatt eines vollständigen, standardmäßigen DOM-Dokuments. Dies kann nützlich sein, wenn Sie beispielsweise in dieser Situation eine andere Benutzeroberfläche präsentieren möchten (z.B. kontextabhängige Elemente anders hinzugefügt werden je nach Fall). - Sie können jetzt einen Filter angeben, wenn Sie
about:config
öffnen; z.B. zeigt "about:config?filter=sessionstore" nur Sitzungsspeicher-bezogene Präferenzen an.