Firefox 55: Versionshinweise für Entwickler
Firefox 55 wurde am 8. August 2017 veröffentlicht. Dieser Artikel führt wichtige Änderungen auf, die für Webentwickler nützlich sind.
Änderungen für Webentwickler
>Entwicklerwerkzeuge
- Netzwerk-Anfragen können jetzt nach Spaltenwerten und anderen Eigenschaften (Firefox-Bug 1041895, Firefox-Bug 1354508, Firefox-Bug 1354507) sowie mithilfe regulärer Ausdrücke (Firefox-Bug 1354495) gefiltert werden.
- Spalten im Netzwerkmonitor können jetzt ein- und ausgeblendet werden (Firefox-Bug 862855).
- Dem Netzwerkmonitor wurden Spalten für die Remote-IP-Adresse (Firefox-Bug 1344523), das Protokoll (Firefox-Bug 1345489), das Schema (Firefox-Bug 1356867) sowie Cookies und gesetzte Cookies (Firefox-Bug 1356869) hinzugefügt.
- Der HTTP-Header
SourceMapwird jetzt unterstützt. Frühere Versionen unterstützten den veralteten HeaderX-SourceMap(siehe Firefox-Bug 1346936).
HTML
- Elemente, bei denen
contenteditableauftruegesetzt ist, verwenden jetzt<div>-Elemente, um Textzeilen voneinander zu trennen. Damit verhält sich Firefox wie andere moderne Browser (Firefox-Bug 1297414). dom.forms.datetimeist in Nightly standardmäßig aktiviert (Firefox-Bug 1366188).
CSS
- Die Eigenschaft
transform-boxist standardmäßig verfügbar (Firefox-Bug 1208550). - Die Timing-Funktion
frames()wurde implementiert (Firefox-Bug 1248340). - Die Eigenschaft
text-justifywurde implementiert (Firefox-Bug 1343512, Firefox-Bug 276079). - [css-grid]
fit-contentreserviert inrepeat()unerwartet Platz für die vollständige Begrenzungsgröße (Firefox-Bug 1359060). - Die logischen Werte
inline-startundinline-endfürfloatundclearwaren zuvor implementiert, in den Release-Kanälen jedoch per Voreinstellung deaktiviert. Sie sind jetzt in allen Kanälen standardmäßig verfügbar (Firefox-Bug 1253919). - Die Voreinstellung
layout.css.variables.enabledwurde vollständig entfernt. CSS-Variablen sind damit dauerhaft aktiviert und können nicht mehr deaktiviert werden (Firefox-Bug 1312328). - Die proprietäre Eigenschaft
-moz-context-propertieswurde implementiert (Firefox-Bug 1058040). - Der Winkelwert Null (0) ohne Gradeinheit wird in
linear-gradient()nicht korrekt interpretiert (Firefox-Bug 1363292). - Das Pseudoelement
::cuewird jetzt unterstützt. Es erfasst Text-Cues, die innerhalb eines Medienelements angezeigt werden (Firefox-Bug 1318542).
SVG
- Das Attribut
frdes Elements<radialGradient>wurde implementiert (Firefox-Bug 1240275).
JavaScript
- Die Objekte
SharedArrayBufferundAtomicssind jetzt standardmäßig aktiviert. Eine Einführung in gemeinsam genutzten Speicher und Atomics in JavaScript finden Sie unter Ein Einblick in die neuen Parallelitätsprimitive von JavaScript. - Der Rest-Operator (
...) wird jetzt bei der Destrukturierung von Objekten unterstützt, und der Spread-Operator (...) funktioniert jetzt in Objektliteralen (ECMAScript-Vorschlag der Stufe 3: Rest-/Spread-Eigenschaften für Objekte, Firefox-Bug 1339395). - Asynchrone Generatormethoden werden jetzt unterstützt (Firefox-Bug 1353693).
- Die Methoden
String.prototype.toLocaleLowerCase()undString.prototype.toLocaleUpperCase()unterstützen jetzt einen optionalen Parameterlocale, mit dem sich ein Sprach-Tag für gebietsschemaspezifische Groß- und Kleinschreibung angeben lässt (Firefox-Bug 1318403). - Das Objekt
Intl.Collatorunterstützt jetzt die OptioncaseFirst(Firefox-Bug 866473). - Wenn kein Gebietsschema angegeben wird, verwendet die Intl API jetzt das Standardgebietsschema des Browsers statt des Betriebssystems (Firefox-Bug 1346674).
- Template-Call-Site-Objekte werden jetzt pro Realm anhand ihrer Liste unverarbeiteter Zeichenfolgen kanonisiert (Firefox-Bug 1108941).
- Die Konstruktoren von
TypedArray(wieInt8Array,Float32Arrayusw.) wurden an ES2017 angepasst. Sie verwenden jetzt die OperationToIndexund lassen Aufrufe ohne Argumente zu, die typisierte Arrays der Länge null zurückgeben (Firefox-Bug 1317383).
APIs
Neue APIs
- Die API zur kooperativen Planung von Hintergrundaufgaben (auch als Background Tasks API oder
requestIdleCallback-API bezeichnet) ist jetzt standardmäßig aktiviert, nachdem sie seit Firefox 53 über eine Voreinstellung verfügbar war. Mit dieser API können Sie Aufgaben für Zeiträume einplanen, in denen der Browser vor dem nächsten Neuzeichnen freie Kapazität feststellt. So kann Ihr Code diese Zeit nutzen, ohne sichtbare Leistungseinbußen zu verursachen (Firefox-Bug 1314959). - Die WebVR 1.1 API ist unter Windows jetzt standardmäßig aktiviert (und unter macOS in Nightly verfügbar). Diese API macht Virtual-Reality-Geräte – beispielsweise Head-Mounted Displays wie Oculus Rift oder HTC Vive – für Webanwendungen zugänglich. Entwickler können dadurch Positions- und Bewegungsdaten des Displays in Bewegungen innerhalb einer 3D-Szene umsetzen und Inhalte auf solchen Displays darstellen.
- Die Intersection Observer API wurde hinzugefügt. Sie ermöglicht es, Änderungen am Schnittbereich eines Zielelements mit einem übergeordneten Element oder mit dem Viewport eines Dokuments auf oberster Ebene asynchron zu beobachten (Firefox-Bug 1321865).
DOM
- Die Eigenschaften
scrollXundscrollYvonWindowsowie ihre AliasepageXOffsetundpageYOffsetwurden für eine Genauigkeit auf Subpixel-Ebene aktualisiert. Statt einer Ganzzahl geben sie jetzt einen Gleitkommawert zurück, der die Scrollposition auf Displays mit Subpixel-Genauigkeit präziser beschreibt (Firefox-Bug 1151421). Bei Bedarf können Sie die Werte mitMath.round()in Ganzzahlen umwandeln. MediaQueryListund weitere damit zusammenhängende Funktionen wurden an die aktuelle Spezifikation angepasst. Siehe Firefox-Bug 1354441 sowieMediaQueryListundMediaQueryListEvent.- Methoden von
DOMTokenList, die den Listenwert ändern, entfernen jetzt automatisch führende und nachgestellte Leerzeichen sowie doppelte Tokens (Firefox-Bug 869788; siehe auch Entfernen von Leerzeichen und Duplikaten). - Die Eigenschaft
maxLengthvonHTMLInputElementkann jetzt mit JavaScript dynamisch geändert werden, nachdem das entsprechende HTML erstellt wurde (Firefox-Bug 1352799). - Der Konstruktor
URL()akzeptiert als Basis (zweiten Parameter) keinenDOMStringmehr, sondern nur noch einenUSVString. Ein vorhandenesURL-Objekt kann weiterhin als Basis verwendet werden; es wird dabei in den Wert seineshref-Attributs umgewandelt (Firefox-Bug 1368950).
DOM-Ereignisse
- Die von der Methode
Document.createEvent()unterstützten Ereignistypen wurden gemäß der aktuellen DOM-Spezifikation aktualisiert (Firefox-Bug 1251198). - Der Wert der Eigenschaft
MessageEvent.originhat jetzt den TypUSVStringstattDOMString. Die EigenschaftMessageEvent.sourcenimmt jetzt einen Wert vom TypMessageEventSourcean. Dabei kann es sich um ein WindowProxy-,MessagePort- oderServiceWorker-Objekt handeln (Firefox-Bug 1311324). - Die Zwei-Finger-Zoomgeste wird jetzt dem Ereignis
wheelin Verbindung mit der TasteCtrlzugeordnet. Dadurch können Entwickler eine einfache Zoomfunktion für Zwei-Finger-Gesten auf mobilen Bildschirmen und Trackpads implementieren. Das Mausrad in Verbindung mitCtrlwird bereits häufig zum Zoomen verwendet (Firefox-Bug 1052253).
Selection API
-
Die Selection API wurde so aktualisiert, dass sie sich beim Fokussieren bearbeitbarer Bereiche, in die eine Auswahl verschoben wird, wie andere Browser verhält (Firefox-Bug 1318312). Weitere Informationen finden Sie unter Verhalten der Selection API bei Fokusänderungen in bearbeitbaren Bereichen.
-
Die API
Selectionwurde an einige neuere Änderungen der Spezifikation angepasst (Firefox-Bug 1359371):- Der Parameter
offsetder Methodencollapse()undextend()ist jetzt optional. - Der Parameter
nodeder Methodecollapse()kann jetztnullsein. - Der Parameter
partialContainmentder MethodecontainsNode()ist jetzt optional. - Die Methode
deleteFromDocument()wurde hinzugefügt.
- Der Parameter
-
Ebenfalls in der API
SelectionwurdenSelection.empty()undSelection.setPosition()als Aliase fürSelection.removeAllRanges()beziehungsweiseSelection.collapse()hinzugefügt, um die Webkompatibilität und die Übereinstimmung mit WebKit/Blink zu verbessern (Firefox-Bug 1359387). -
Die Methoden
StorageManager.persist()undStorageManager.persisted()der Storage API wurden implementiert und fürWindow-Kontexte verfügbar gemacht (Firefox-Bug 1286717).
Workers
- Workers und Shared Workers können jetzt mit einer identifizierenden Eigenschaft
nameerstellt werden. Siehe die KonstruktorenWorker()undSharedWorker()sowie die SchnittstellenDedicatedWorkerGlobalScopeundSharedWorkerGlobalScope(Firefox-Bug 1364297). - Für
Window.setTimeout(),WorkerGlobalScope.setTimeout(),Window.setInterval()undWorkerGlobalScope.setInterval()gelten jetzt Mindestintervalle zur Drosselung von Tracking-Skripten in Hintergrund-Tabs – siehe Drosselung von Tracking-Skripten (Firefox-Bug 1355311).
Service Workers/Push
- Nachrichten, die an Service-Worker-Kontexte gesendet werden, etwa als Ereignisobjekt von
onmessage, werden jetzt durchMessageEvent-Objekte dargestellt. Dies sorgt für Konsistenz mit anderen Web-Messaging-Funktionen. - Die Methode
PushManager.subscribe()akzeptiert jetztArrayBuffer-Objekte und Base64-kodierte Zeichenfolgen als Werte fürapplicationServerKey(Firefox-Bug 1337348).
Web Audio API
- Ein nicht standardisierter Konstruktor für die Schnittstelle
AudioContext, der einen String-Enum-Wert für den Verwendungszweck des Kontexts akzeptierte, führte zu Fehlern, wenn der Parameteroptionsangegeben wurde. Dieser Konstruktor wurde entfernt. Beachten Sie jedoch, dass der Parameteroptionsin Firefox noch nicht unterstützt wird und derzeit ignoriert wird (Firefox-Bug 1361475).
WebRTC
getUserMedia()liefert jetzt standardmäßig einen Stereo-Audiostream, wenn das Quellgerät Stereoton bereitstellt. Die Möglichkeit, ausdrücklich eine Mono-Eingabe anzufordern, wird mit Firefox 56 eingeführt. Derzeit funktioniert dies nur auf Desktop-Geräten; Firefox für Mobilgeräte unterstützt momentan keine Stereo-Audioeingabequellen (Firefox-Bug 971528).- Die Medienfunktionen, Constraints und Einstellungen
autoGainControlundnoiseSuppressionvongetUserMedia()entsprechen jetzt der Spezifikation. Zuvor hatten sie das Präfixmoz(Firefox-Bug 1366415). - Bei einem Aufruf mit einer leeren Menge von Constraints gab
getUserMedia()fälschlicherweiseNotSupportedErrorstattTypeErrorzurück. Dies wurde behoben (Firefox-Bug 1349480). - Die folgenden neuen WebRTC-Statistiken sind verfügbar:
framesEncoded,pliCount,nackCountundfirCount(Firefox-Bug 1348657). - Das bisher
mozRttgenannte Feld des DictionariesRTCInboundRTPStreamStatswurde gemäß der Spezifikation inroundTripTimeumbenannt. Außerdem wurde sein Verhalten an den Standard angepasst: Es enthält einen Gleitkommawert mit doppelter Genauigkeit, der die Umlaufzeit anhand der RTCP-Zeitstempel im RTCP Receiver Report schätzt. Der Wert wird in Sekunden gemessen und folgt dem in RFC 3550, Abschnitt 6.4.1 beschriebenen Algorithmus (Firefox-Bug 1344970). Beachten Sie jedoch, dass diese Eigenschaft demnächst in ein anderes Dictionary (RTCRemoteInboundRTPStreamStats) verschoben wird (Firefox-Bug 1380555). - Das Dictionary
RTCRTPStreamStatsenthält jetzt die FelderfirCount,pliCountundnackCount. Sie liefern technische Detailinformationen, anhand derer sich die Zuverlässigkeit der Verbindung beurteilen lässt (Firefox-Bug 1348657). - Das Dictionary
RTCOutboundRTPStreamStatsenthält jetzt das FeldframesEncoded. Es gibt an, wie viele Frames für den Stream erfolgreich kodiert wurden; anhand dieser Information können Sie die Bildrate berechnen (Firefox-Bug 1348657). - Unter Android gibt es jetzt eine Voreinstellung, mit der sich Hardware-Videokodierung aktivieren lässt, um die Leistung bei Videoanrufen zu verbessern und den Akku zu schonen. Sie soll in Firefox 56 standardmäßig aktiviert werden (Firefox-Bug 1265755).
Encrypted Media Extensions API
- Firefox erlaubt derzeit die Verwendung von Encrypted Media Extensions in unsicheren Kontexten, obwohl die Spezifikation dies nicht zulässt. Dies wird sich in naher Zukunft ändern. Ab Firefox 55 wird bei einer solchen Verwendung eine Warnung zur bevorstehenden Einstellung in der Webkonsole ausgegeben (Firefox-Bug 1361000).
- Firefox verlangt derzeit nicht, dass der an
Navigator.requestMediaKeySystemAccess()übergebene ParametersuggestedConfigurationsmindestens einMediaKeySystemCapabilities-Objekt enthält, obwohl die Spezifikation dies vorschreibt. Ab Firefox 55 wird in der Webkonsole eine Warnung ausgegeben, wenn eine Audio- oder Videokonfiguration ohne Angabe unterstützter Codecs festgelegt wird. Künftig wird eine Ausnahme ausgelöst, wenn für Audio oder Video keine gültige Konfiguration angegeben wird (Firefox-Bug 1368683).
WebGL
- Die Erweiterung
WEBGL_compressed_texture_s3tc_srgbist jetzt für WebGL- und WebGL2-Kontexte verfügbar (Firefox-Bug 1325113).
Sicherheit
- Die Geolocation API ist jetzt nur noch in sicheren Kontexten verfügbar (Firefox-Bug 1072859).
- Die Storage API ist jetzt nur noch in sicheren Kontexten verfügbar (Firefox-Bug 1268804).
- Das Laden gemischter Inhalte auf localhost ist jetzt zulässig (Firefox-Bug 903966).
- Das Laden entfernter JAR-Dateien wurde erneut deaktiviert (Firefox-Bug 1329336).
Plugins
- Flash-Inhalte werden jetzt erst nach einem Klick aktiviert (Firefox-Bug 1317856). Dies wurde sofort für alle Nightly-Nutzer und für 50 % der Beta-Nutzer eingeführt. Für die Release-Version von Firefox 55 ist geplant, die Funktion zwei Wochen nach der Veröffentlichung für 5 % der Nutzer, nach vier Wochen für 25 % und nach sechs Wochen für 100 % der Nutzer zu aktivieren (Firefox-Bug 1365714).
- Flash und andere Plugins können nur noch über die URL-Schemas
http://undhttps://geladen werden (Firefox-Bug 1335475).
Sonstiges
- Firefox unter Linux kann jetzt mit dem Flag
-headlessim Headless-Modus ausgeführt werden (siehe Firefox-Bug 1356681).
Entfernungen von der Webplattform
>HTML
-
Mit dem Attribut
xml:baselässt sich die Basis-URL für Pfade im Attributstylenicht mehr festlegen, beispielsweise:<div xml:base="https://example.com/" style="background:url(picture.jpg)"></div>(Firefox-Bug 1350521). -
Das Attribut
scopeddes Elements<style>ist in Inhaltsdokumenten ab Firefox 55 nur noch über die Voreinstellunglayout.css.scoped-style.enabledverfügbar, da es von keinem anderen Browser unterstützt wird. -
Die Unterstützung für den wenig verbreiteten Wert
MSThemeCompatibledes Attributshttp-equivdes Elements<meta>wurde aus Firefox entfernt. Kein anderer moderner Browser unterstützt ihn, und er verursachte Kompatibilitätsprobleme (Firefox-Bug 966240).
CSS
- Die proprietäre Pseudoklasse
:-moz-bound-elementwurde entfernt (Firefox-Bug 1350147). - Der proprietäre Wert
-moz-anchor-decorationfürtext-decoration-linewurde entfernt (Firefox-Bug 1355734).
APIs
- Die Eigenschaft
UIEvent.isCharwurde von keinem anderen Browser als Firefox unterstützt und war, außer unter macOS, nie vollständig implementiert. Deshalb wurde sie in Firefox 55 entfernt, um das Verhalten an andere Browser anzugleichen. - Die proprietäre Device Storage API von Firefox OS wurde von der Plattform entfernt (Firefox-Bug 1299500).
- Der Parameter
aShowDialogder nicht standardisierten MethodeWindow.find(), mit dem sich ein Suchdialog im Browser öffnen ließ, wurde entfernt (Firefox-Bug 1348409). - Die Methode
HTMLFormElement.requestAutoComplete()wurde entfernt (sieheHTMLFormElement) (Firefox-Bug 1270740). - Die nicht standardisierten, Mozilla-spezifischen WebRTC-Angebotsoptionen
mozDontOfferDataChannelundmozBundleOnlywurden aus dem DictionaryRTCOfferOptionsentfernt und werden vonRTCPeerConnection.createOffer()nicht mehr unterstützt (Firefox-Bug 1196974). - Die Unterstützung für die proprietäre
Audio Channels APIvon Firefox OS wurde ausHTMLMediaElementundAudioContextentfernt (Firefox-Bug 1358061).
SVG
- Die Schnittstellen
SVGZoomEventundSVGZoomEventssowie das Attributonzoom <svg>wurden aus der SVG2-Spezifikation und aus Gecko entfernt (Firefox-Bug 1314388).
Änderungen für Add-on- und Mozilla-Entwickler
>WebExtensions
- Mit der Eigenschaft
commandvoncontextMenus.create()können Sie Browser-Action-Pop-ups, Page-Action-Pop-ups und Seitenleisten über das Kontextmenü öffnen. - proxy API
- Mit dem Schlüssel
chrome_settings_overrideskönnen Sie die Startseite des Browsers überschreiben. - Mit der Eigenschaft
browser_stylekönnen Sie Browser-Action-Pop-ups, Seitenleisten und Optionsseiten im Stil des Browsers gestalten. - permissions API