Firefox 8 für Entwickler
Firefox 8 wurde am 8. November 2011 veröffentlicht. Dieser Artikel bietet Informationen sowohl für Web-Entwickler als auch für Add-on- und Mozilla-Projekt-Entwickler, um die Funktionen dieser Version voll auszuschöpfen.
Änderungen für Web-Entwickler
HTML
- Die
HTMLImageElement
crossOrigin
-Eigenschaft wurde hinzugefügt und dascrossorigin
-Attribut wurde dem<img>
-Element hinzugefügt. (siehe Firefox Fehler 664299) - Die Methode
HTMLSelectElement.add()
unterstützt jetzt 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 Fehler 666200) - Der
HTMLIsIndexElement
-Konstruktor wurde entfernt. Keine Elemente haben diese Schnittstelle seit vor Firefox 4 implementiert. - Die HTML5-"Kontextmenü"-Funktion (
contextmenu
-Attribut), mit der benutzerdefinierte, elementspezifische Einträge zum nativen Kontextmenü hinzugefügt werden können, wird jetzt unterstützt (die Implementierung ist noch experimentell, es werden Änderungen in der Spezifikation erwartet; siehe Firefox Fehler 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. - Den meisten Elementen wird jetzt ein Fokus-Ring gezeichnet, wenn sie durch das
tabindex
-Attribut fokussierbar gemacht wurden und der Benutzer das Element dann fokussiert. - In einem Satz von verschachtelten
<label>
-Elementen lösen Klickereignisse nicht mehr mehrere <label>-Elemente aus, was in der Vergangenheit dazu führte, dass Firefox nicht mehr reagierte (siehe Firefox Fehler 646157).
DOM
- Die Methode
insertAdjacentHTML
wurde implementiert. BlobBuilder
hat jetzt einegetFile()
-Methode, die den Inhalt des Blobs als Datei zurückgibt.- Die Schnittstelle
FileReaderSync
(Teil der FileAPI) wurde implementiert. - Die Fehlerbehandlung in verschachtelten
<label>
s wurde behoben. - Sie können jetzt
window.postMessage()
verwenden, umFile
- undFileList
-Objekte zwischen Fenstern zu übergeben. - Beim Bearbeiten von
contenteditable
-Bereichen führt das Verlassen einer Überschrift durch Drücken der Eingabetaste oder das Verlassen des Listenbearbeitungsmodus durch zweimaliges Drücken der Eingabetaste jetzt zum Absatzbearbeitungsmodus (das heißt, Absätze innerhalb von<p>
-Elementen) anstatt Linien durch<br>
-Elemente zu trennen. - Ein Fehler wurde behoben, der verhinderte, dass die Ausrichtung korrekt wirkte, wenn sie auf die erste Zeile in einem
contenteditable
-Bereich angewendet wurde. - Ein Fehler wurde behoben, der dazu führte, dass das Drücken der Löschen- oder Rücktaste am Beginn eines
contenteditable
-Bereichs den vorherigencontenteditable
-Block beeinflusste, falls vorhanden. Document.getSelection()
gibt jetzt dasselbeSelection
-Objekt wiewindow.getSelection()
zurück, anstatt es zu stringifizieren.- Die HTML5-
selectionDirection
-Eigenschaft macht es möglich, die Richtung der Auswahl in einem bearbeitbaren Text zu definieren. HTMLMediaElement
haben jetzt eineseekable
-Eigenschaft, die einTimeRanges
-Objekt zurückgibt.- Das
HTMLMediaElement.preload
-Attribut wird jetzt korrekt als enumerierter Wert dargestellt. - Die
crossOrigin
-Eigenschaft standardmäßig auf "Anonymous" gesetzt, wenn ein ungültiger Wert verwendet wird. navigator.cookieEnabled
gibt jetzt korrekte Informationen zurück, wenn die Standard-Cookie-Einstellungen auf einer pro-Website-Basis überschrieben wurden.
JavaScript
RegExp.exec()
undRegExp.test()
, die ohne Argumente aufgerufen werden, passen jetzt auf den String "undefined".String.search()
undString.match()
, die ohne Argumente oder mitundefined
aufgerufen werden, passen jetzt auf den leeren String und passen somit auf jeden String.- Unterstützung für Watchlists wurde mit den neuen (nicht standardisierten)
watch()
- undunwatch()
-Methoden implementiert.
CSS
<resolution>
akzeptiert jetzt<number>
, nicht nur<integer>
-Werte laut der Spezifikation.- Silbentrennungsregeln wurden für viele neue Sprachen beim Verwenden von
hyphens
hinzugefügt. - Die Behandlung von
background-size
wurde überarbeitet, um der Spezifikation besser zu entsprechen. - In der Vergangenheit hatte
text-decoration
im Quirks-Modus die Dicke der Linie und die Position angepasst, um dem abgeleiteten Text zu entsprechen. Jetzt sind die Darstellungen im Standard- und Quirks-Modus ähnlicher. - Die horizontale Positionierung für Elemente wurde in vielen Fällen genauer an die Spezifikation angepasst. Dokumentation dafür steht noch aus, aber vorerst siehe Firefox Fehler 682780, Kommentar 23 für Details.
- 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-Codierung akzeptiert, gemäß diesen RFCs.
- Der MIME-Header-Feldparser (
Content-Disposition
) erfordert jetzt "=" in Parametern. - Skripte werden nicht mehr heruntergeladen, wenn JavaScript deaktiviert ist.
- SSL 2.0 wird nicht mehr unterstützt.
WebSockets
- Die
WebSocket
-Objektmethodesend()
gibt nicht mehr fälschlicherweise einen Booleschen Wert zurück. - Die Methode
WebSocket.close()
desWebSocket
-Objekts entspricht jetzt dem aktuellen Entwurf des Standards, und Schließereignisse verwenden jetzt korrekt dieCloseEvent
-Schnittstelle. - Das Attribut
extensions
desWebSocket
-Objekts wird jetzt unterstützt. - Der WebSocket-Konstruktor unterstützt jetzt ein Array von Protokollen sowie einen einzelnen Protokoll-String.
- Gemischte Inhalte sind mit WebSockets nicht erlaubt; das heißt, Sie können keine Verbindung zu einem nicht sicheren WebSocket-Server aus sicheren Inhalten herstellen.
- Verbindungsfehler mit WebSockets lösen jetzt den
onerror
-Handler aus. - Die WebSocket-API wurde auf den neuesten Entwurf der Spezifikation aktualisiert (siehe Firefox Fehler 674890, Firefox Fehler 674527, und Firefox Fehler 674716).
- Die Deflate-Stream-Erweiterung für WebSockets wurde deaktiviert; sie wurde veraltet und beeinträchtigte die Kompatibilität mit einigen Websites.
WebGL
- Cross-Domain-Texturen können jetzt mit CORS-Zulassung zugelassen werden.
- Cross-Prozess-Rendering mit Direct2D/Direct3D 10.
MathML
Entwicklertools
- 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
Sehen Sie den Aktualisierungsleitfaden für 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, ebenso wie alle Hauptversionen von Firefox.
XPCOM
Components.utils
-
Die neuen Methoden
Components.utils.createObjectIn()
undComponents.utils.makeObjectPropsNormal()
wurden erstellt, um die Erstellung von Objekten in spezifischen Bereichen zu erleichtern.
Weitere XPCOM-bezogene Änderungen
- Sie können jetzt DOM-
File
-Objekte aus Komponentencode instanziieren, indem Sienew File
verwenden, anstatt einnsIDOMFile
direkt zu instanziieren. - Der
nsTPtrArray
-Arraytyp wurde entfernt. Seine Funktionalität ist jetzt vollständig aufnsTArray
verfügbar, das jetzt die MethodeSafeElementAt()
bietet, wenn es mit einem Zeigertyp instanziert wird.
Worker
Es ist nicht mehr möglich, auf XPCOM-Objekte von ChromeWorkers aus zuzugreifen. XPConnect wurde in Worker-Kontexten ab Firefox Fehler 649537 deaktiviert.
XUL
- Ein Fehler in
document.execCommand()
, der auftrat, wenn es auf den Wert voncontentDocument
angewendet wurde, wurde behoben. Seit Firefox 3 führte dies zu Fehlern, anstatt korrekt zu funktionieren. - Bootstrapped-Add-ons können jetzt Chrome mithilfe einer
chrome.manifest
-Datei laden. - XUL-Bilder verkleinern sich jetzt mit dem gleichen Verhältnis in beiden Richtungen, wenn maximale Größen angegeben werden.
Änderungen am Build-System
-
Die folgenden Build-Konfigurationsoptionen wurden entfernt:
--enable-timeline
--disable-storage
--necko-disk-cache
-
Beim Kompilieren von IDL-Dateien in Header wird die Header-Datei
jspubtd.h
automatisch eingeschlossen, wenn nötig. Manuelle Einschlüsse vonjspubtd.h
und/oderjsapi.h
in IDL-Dateien, die jsval oder [implicit_jscontext] verwenden, sind nicht mehr notwendig.
Chrome-Registrierung
- Das
platformversion
-Flag kann in der chrome.manifest verwendet werden, um die Gecko-Version-Kompatibilität anzugeben.
Schnittstellenänderungen
- Die Methode
mozIJSSubScriptLoader.loadSubScript()
lädt jetzt Skripte aus dem Startcache, wann immer möglich. - Das Attribut
ownerWindow
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 Aktualisierungen der Places-Datenbank geändert. Siehe die neuen Methoden
mozIVisitInfoCallback.handleResult()
undmozIVisitInfoCallback.handleError()
, die die alte Einzelmethode für die Bearbeitung von Fehler- und Erfolgssituationen 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 der expliziten Speicherzuweisungen meldet. - Die
nsIMemoryReporterManager
-Schnittstelle hat ein neuesresident
-Attribut, das die Menge des physisch verwendeten 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. Der Android-Support wurde aufgrund vermeintlicher Sicherheitsbedenken zurückgezogen. - Die
nsISelection2
-Schnittstelle wurde in diensISelectionPrivate
-Schnittstelle integriert. - Die
nsISelection3
-Schnittstelle wurde in diensISelection
-Schnittstelle integriert. - Das
nsISessionStartup
-Attributstate
ist jetzt einjsval
anstelle 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. Worker können weiterhin mit den Konstruktoren Worker
und ChromeWorker
erstellt werden.
Sonstige Änderungen
- Wenn ein Fenster minimiert, maximiert oder zwischen Vollbild- und Fenster-Modus umgeschaltet wird, erhält es ein
sizemodechange
-Ereignis. - Sie können jetzt die Einstellung
extensions.autoDisableScopes
verwenden, um die automatische Installation von Add-ons aus bestimmten Add-on-Installationsorten zu verhindern. - Die neue Eigenschaft
mozSyntheticDocument
aufDocument
-Objekten ermöglicht es Ihnen festzustellen, ob ein Dokument synthetisch ist (also etwas wie ein eigenständiges Bild-, Video- oder Audio-Datei) anstelle eines vollständigen, standardmäßigen DOM-Dokuments. Dies kann nützlich sein, wenn Sie in dieser Situation beispielsweise eine andere Benutzeroberfläche präsentieren möchten (z. B. das Hinzufügen kontextbezogener Elemente je nach Fall unterschiedlich). - Sie können beim Öffnen von
about:config
jetzt einen Filter angeben; beispielsweise zeigtabout:config?filter=sessionstore
nur Session-Speicher-bezogene Einstellungen an.