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 Entwickler von Add-ons und Mozilla-Projekten, um die Funktionen dieser Version vollständig zu nutzen.
Ä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
HTMLSelectElement.add()-Methode 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. Kein Element hat dieses Interface seit 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 anzugeben. - Die meisten Elemente erhalten nun einen Fokusring, wenn sie durch das
tabindex-Attribut 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 führte, dass Firefox nicht mehr reagierte (siehe Firefox Bug 646157).
DOM
- Die
insertAdjacentHTML-Methode wurde implementiert. BlobBuilderhat nun einegetFile()-Methode, die den Inhalt des Blob als Datei zurückgibt.- Das
FileReaderSync-Interface (Teil des FileAPI) wurde implementiert. - Die Ereignisverarbeitung in verschachtelten
<label>s wurde behoben. - Sie können nun
window.postMessage()verwenden, umFile- undFileList-Objekte zwischen Fenstern zu übergeben. - Beim Bearbeiten von
contenteditable-Bereichen führen das Verlassen einer Überschrift durch Drücken der Eingabetaste oder das Verlassen des Listenbearbeitungsmodus durch zweimaliges Drücken der Eingabetaste nun zur Rückkehr in den Texteingabemodus (d.h. Absätze innerhalb von<p>-Blöcken) anstatt Linien durch<br>-Elemente zu trennen. - Ein Fehler, der verhinderte, dass die Rechtfertigung ordnungsgemäß wirksam wird, wenn sie auf die erste Zeile in einem
contenteditable-Bereich angewendet wird, wurde behoben. - Ein Fehler, der dazu führte, dass das Drücken von Löschen oder Rücktaste am Anfang eines
contenteditable-Bereichs den vorherigencontenteditable-Block beeinflusste, wenn einer vorhanden ist, wurde behoben. Document.getSelection()gibt nun dasselbeSelection-Objekt zurück wiewindow.getSelection(), anstatt es zu stringifizieren.- Die HTML5-Eigenschaft
selectionDirectionermöglicht es, die Richtung der Auswahl in einem editierbaren Text zu definieren. HTMLMediaElementhat nun eineseekable-Eigenschaft, die einTimeRanges-Objekt zurückgibt.- Das
HTMLMediaElement.preload-Attribut spiegelt nun korrekt als enumerierter Wert wider. crossOriginproperty standardmäßig auf "Anonymous" gesetzt, wenn ein ungültiger Wert verwendet wird.navigator.cookieEnabledgibt nun korrekte Informationen zurück, wenn die Standardeinstellung für Cookies standortbezogen überschrieben wird.
JavaScript
RegExp.exec()undRegExp.test(), die ohne Argumente aufgerufen werden, stimmen nun mit dem String "undefined" überein.String.search()undString.match(), die ohne Argumente oder mitundefinedaufgerufen werden, stimmen nun mit dem leeren String überein und passen somit zu jedem String.- Unterstützung für Beobachtungslisten wurde mit den neuen (nicht standardmäßigen)
watch()- undunwatch()-Methoden implementiert.
CSS
<resolution>akzeptiert nun<number>, nicht nur<integer>-Werte gemäß der Spezifikation.- Silbentrennungsregeln wurden für viele neue Sprachen beim Verwenden von
hyphenshinzugefügt. - Die Handhabung von
background-sizewurde überarbeitet, um der Spezifikation näher zu kommen. - In der Vergangenheit wurden in Quirks-Modus bei
text-decorationLinienstärke und -position auf textuelle Nachkommen angepasst. Jetzt sind die Darstellungen im Standards- und Quirks-Modus sich ähnlicher. - Die horizontale Positionierung von Elementen wurde in vielen Fällen mehr an die Spezifikation angepasst. Eine Dokumentation dazu folgt, vorerst siehe Firefox Bug 682780, Kommentar 23 für Details.
- SVG-Bilder werden nun 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.
- MIME-Headerfeld-Parser (
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-Objektsend()-Methode gibt nicht mehr fälschlicherweise einen Boolean-Wert zurück. - Die
WebSocket-Objektclose()-Methode entspricht nun dem aktuellen Entwurf des Standards, und Schließereignisse verwenden nun korrekt dasCloseEvent-Interface. - Das
WebSocket-Objektextensions-Attribut wird nun unterstützt. - Der WebSocket-Konstruktor unterstützt nun eine Reihe von Protokollen sowie eine einzelne Protokollzeichenfolge.
- Gemischte Inhalte sind mit WebSockets nicht erlaubt; das heißt, Sie können keine Verbindung zu einem nicht sicheren WebSocket-Server von sicherem Inhalt öffnen.
- 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 als veraltet eingestuft und verursachte Kompatibilitätsprobleme mit einigen Websites.
WebGL
- Cross-Domain-Texturen können nun mit CORS-Zustimmung erlaubt werden.
- Cross-Prozess-Rendering mit Direct2D/Direct3D 10.
MathML
Entwicklerwerkzeuge
- Das
consoleObjekt 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 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 das Erstellen von Objekten in spezifischen Umgebungen zu erleichtern.
Weitere XPCOM-bezogene Änderungen
- Sie können nun DOM
File-Objekte aus dem Komponenten-Code instanziieren, indem Sie new File verwenden, anstatt einnsIDOMFiledirekt instanziieren zu müssen. - 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.
Arbeiter
Es ist nicht mehr möglich, auf XPCOM-Objekte von ChromeWorkers aus zuzugreifen. XPConnect wurde in den Kontexten von Arbeitern gemäß Firefox Bug 649537 deaktiviert.
XUL
- Ein Fehler in
document.execCommand(), der auftrat, wenn er auf dem Wert voncontentDocumentaufgerufen wurde, wurde behoben. Seit Firefox 3 hatte dies zu Fehlern geführt, anstatt korrekt zu funktionieren. - Bootstrap-Add-ons können nun Chrome mit einer
chrome.manifest-Datei laden. - XUL-Bilder schrumpfen nun in beide Richtungen mit dem gleichen Verhältnis, wenn maximale Größen angegeben werden.
Änderungen im Buildsystem
-
Die folgenden Build-Konfigurationsoptionen wurden entfernt:
--enable-timeline--disable-storage--necko-disk-cache
-
Beim Kompilieren von IDL-Dateien zu Headern wird die Headerdatei
jspubtd.hautomatisch eingeschlossen, wenn nötig. 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 Kompatibilität der Gecko-Version anzugeben.
Schnittstellenänderungen
- Die
mozIJSSubScriptLoader.loadSubScript()-Methode lädt nun Skripte aus dem Startcache, wenn möglich. - Das
ownerWindow-Attribut wurde aus demnsIAccessNode-Interface entfernt. - Das
nsIDOMStorageWindow-Interface wurde in dasnsIDOMWindow-Interface integriert. - Alle Mitglieder des
nsIDOMWindowInternal-Interface wurden in dasnsIDOMWindow-Interface verschoben. Das Interface selbst (ohne Mitglieder) bleibt bis Firefox 9 zur Kompatibilität verfügbar. - Um die Leistung zu verbessern, wurde die Rückrufbehandlung für asynchrone Aktualisierungen der Places-Datenbank geändert. Siehe die neuen
mozIVisitInfoCallback.handleResult()- undmozIVisitInfoCallback.handleError()-Methoden, die die alte einheitliche Methode für die Behandlung von Fehler- und Erfolgsbedingungen ersetzen. - Das
KIND_MAPPED-Attribut vonnsIMemoryReporterwurde zugunsten vonKIND_NONHEAPveraltet, neue EinheitentypenUNITS_COUNT_CUMULATIVEundUNITS_PERCENTAGEwurden 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 verwendeten physischen Speichers meldet. - Die
nsINetworkLinkService-Schnittstelle hat ein neues Attribut,linkType. Dieses Attribut gibt den verwendeten Verbindungstyp an. Alle Betriebssysteme geben derzeitLINK_TYPE_UNKNOWNzurück. Die Android-Unterstützung wurde aufgrund wahrgenommener Sicherheitsbedenken zurückgezogen. - Das
nsISelection2-Interface wurde in dasnsISelectionPrivate-Interface integriert. - Das
nsISelection3-Interface wurde in dasnsISelection-Interface integriert. - Das
nsISessionStartup-Attribut status ist nun einjsvalanstelle eines Strings, aus Leistungsgründen. - Das
nsIDocShell-AttributisActiveist nunfalsefür minimierte Fenster. - Die
nsIDownloadHistory.addDownload()-Methode speichert nun das Ziel, an dem der Download im lokalen Dateisystem gespeichert wird.
Entfernte Schnittstellen
Die folgenden Schnittstellen waren Implementierungsdetails, die nicht mehr benötigt werden:
nsITimelineServicensIDOMHTMLIsIndexElement
Die nsIWorkerFactory-Schnittstelle wurde ebenfalls entfernt. Arbeiter können weiterhin mit den Konstruktoren Worker und ChromeWorker erstellt werden.
Weitere Änderungen
- Wenn ein Fenster minimiert, wiederhergestellt oder zwischen Vollbild- und Fenstermodus wechselt, erhält es ein
sizemodechange-Ereignis. - Sie können nun die Einstellung
extensions.autoDisableScopesverwenden, um die automatische Installation von Add-ons von bestimmten Add-on-Installationsorten zu deaktivieren. - Die neue
mozSyntheticDocument-Eigenschaft aufDocument-Objekten ermöglicht es Ihnen zu bestimmen, ob ein Dokument synthetisch ist (d.h. etwas wie eine eigenständige Bild-, Video- oder Audiodatei) anstelle eines vollständigen, standardmäßigen DOM-Dokuments. Dies kann nützlich sein, wenn Sie beispielsweise eine andere Benutzeroberfläche in dieser Situation präsentieren möchten (wie das Hinzufügen kontextueller Elemente je nach diesem Fall unterschiedlich). - Sie können nun bei der Öffnung von
about:configeinen Filter angeben; zum Beispiel zeigtabout:config?filter=sessionstorenur sitzungsbezogene Einstellungen an.