Firefox 57 (Quantum) für Entwickler
Dieser Artikel bietet Informationen über die Änderungen in Firefox 57 (auch bekannt als Firefox Quantum), die Entwickler betreffen werden. Firefox 57 wurde am 14. November 2017 veröffentlicht.
Firefox 57 === Firefox Quantum
Firefox 57 erhielt den Veröffentlichungsnamen Quantum, nach dem Firefox Quantum Entwicklungsprojekt, das darauf abzielt, Firefox von Grund auf neu zu gestalten und dabei erhebliche Verbesserungen in der Leistung, Stabilität und visuellen Gestaltung bietet. Dies ist die erste Version von Firefox, die einige dieser Verbesserungen ausliefert, und wir wollten diesen Anlass markieren.
Hinweis: Um mehr über die Quantum-Funktionen in dieser Version zu lesen, lesen Sie Firefox Quantum Developer Edition: der schnellste Firefox aller Zeiten mit Photon UI und besseren Tools von Dan Callahan.
Firefox's neue parallele CSS-Engine — auch bekannt als Quantum CSS oder Stylo — ist in Firefox 57 für Desktop standardmäßig aktiviert, mobile Versionen von Firefox folgen später. Entwickler sollten keine signifikanten Unterschiede bemerken, abgesehen von einer ganzen Reihe von Leistungsverbesserungen. Es gibt jedoch eine Reihe von kleinen funktionellen Unterschieden in Stylo, die implementiert wurden, um nicht standardkonformes Gecko-Verhalten zu beheben, das eliminiert werden soll. Wir werden über solche Unterschiede auf Referenzseiten und in den Versionshinweisen berichten (siehe Quantum CSS Anmerkungen).
Änderungen für Webentwickler
Entwicklerwerkzeuge
Keine Änderungen.
HTML
- Die date und time
<input>
Typen sind jetzt in allen Builds aktiviert (Firefox Bug 1399036).
CSS
- Die
minimal-ui
undstandalone
Werte derdisplay-mode
Media Query werden nun unterstützt (Firefox Bug 1369815). Siehe auch das Web App Manifestdisplay
Feld. - Die
grid-row-gap
undgrid-column-gap
Eigenschaften werden nicht mehr durch diegrid
Kurzschrift zurückgesetzt (Firefox Bug 1387410). - Die
layout.css.clip-path-shapes.enabled
Einstellung wurde entfernt (Firefox Bug 1399767). Diese Einstellung erlaubte die Deaktivierung der<basic-shape>
Unterstützung inclip-path
. Diese Unterstützung wurde in Firefox 54 eingeführt und kann nicht mehr deaktiviert werden.
Quantum CSS Anmerkungen
Folgende Bugs wurden in Quantum behoben:
- Radiale Gradientwerte wie
radial-gradient(circle gold,red)
funktionieren im alten Gecko-Stilsystem, obwohl sie es nicht sollten, da das Komma zwischencircle
undgold
fehlt (Firefox Bug 1383323). - Wenn Sie ein Off-Screen-Element auf den Bildschirm animieren, aber eine Verzögerung festlegen, wird Gecko auf einigen Plattformen, z. B. unter Windows, nicht neu gezeichnet (Firefox Bug 1383239).
- In Gecko können
<details>
Elemente nicht standardmäßig mit demopen
Attribut geöffnet werden, wenn sie eine aktiveanimation
haben (Firefox Bug 1382124). - In Gecko funktioniert
transitions
nicht, wenn von einemtext-shadow
mit einer Farbe zu einemtext-shadow
ohne spezifizierte Farbe übergegangen wird (Firefox Bug 726550). - In Gecko kann das Abbrechen einer füllenden Animation (z. B. mit
animation-fill-mode: forwards
gesetzt) einen Übergang auf demselben Element auslösen, jedoch nur einmal (siehe Firefox Bug 1192592 und diese Testfälle für weitere Informationen). Im Allgemeinen sollten deklarative Animationen keine Übergänge auslösen. - Animationen mit em-Einheiten sind nicht von Änderungen der
font-size
auf dem Elternteil des animierten Elements in Gecko betroffen, obwohl sie es sein sollten (Firefox Bug 1254424). - Gecko behandelt auch die
font-size
Vererbung anders als Quantum CSS, was bedeutet, dass für einige Spracheinstellungen vererbte Schriftgrößen kleiner ausfallen als erwartet (siehe Firefox Bug 1391341). - Gecko verwendet denselben Mechanismus beim Parsen eines url-tokens beim Parsen der
domain()
oderurl-prefix()
URL-Abgleichsfunktionen für eine@-moz-document
Regel. Quantum CSS verwendet nicht denselben Mechanismus und betrachtet Tokens nicht als ungültig, wenn sie Klammern oder Anführungszeichen enthalten (Firefox Bug 1362333). - In Gecko, wenn Sie eine Systemschriftart als Wert des
font
eines Canvas 2D-Kontexts setzen (z. B.menu
), schlägt das Abrufen des Schriftwerts fehl, um die erwartete Schriftart zurückzugeben (sie gibt nichts zurück). Dies wurde in Quantum behoben. (Firefox Bug 1374885). - In Gecko, wenn Sie einen abgetrennten Teilbaum erstellen (z. B. ein
<div>
, der mitcreateElement()
erstellt wurde und noch nicht in das DOM eingefügt wurde), wird das Wurzelelement des Teilbaums als Block-Element gesetzt. In Quantum CSS wird dies gemäß der Spezifikation als Inline gesetzt (Firefox Bug 1374994). - In Gecko werden
calc()
Ausdrücke abgelehnt — was den Wert ungültig macht — wenn sie als Radiuskomponente einerradial-gradient()
Funktion verwendet werden (Firefox Bug 1376019). - In Gecko wird
calc(1*2*3)
nicht erfolgreich geparst; Quantum CSS behebt dies (Firefox Bug 1379467). - In Quantum CSS wird
calc()
überall unterstützt, wo die Spezifikation es erklärt (Firefox Bug 1350857). In Gecko ist es nicht. - Gecko hat einen Fehler, bei dem die
::before
und::after
Pseudoelemente weiterhin generiert werden, selbst wenn dercontent
Eigenschaftswert aufnormal
odernone
gesetzt ist. Laut Spezifikation sollten sie nicht generiert werden (Firefox Bug 1387931). - Ein anderer Fehler in Gecko bedeutet, dass die
background-position
Eigenschaft nicht zwischen zwei Werten mit unterschiedlicher Anzahl von<position>
Werten übergangen werden kann, zum Beispielbackground-position: 10px 10px;
undbackground-position: 20px 20px, 30px 30px;
(siehe Firefox Bug 1390446).
SVG
Keine Änderungen.
JavaScript
- Die nicht-standardisierte
for each...in
Schleife, die ursprünglich Teil von ECMAScript for XML (E4X) war, wurde entfernt. Bitte verwenden Sie stattdessenfor...of
. (Firefox Bug 1083470). - Die Methoden
Object.prototype.watch()
undObject.prototype.unwatch()
sind veraltet, werfen nun eine Warnung beim Gebrauch und werden bald entfernt (Firefox Bug 934669). - Die nicht-standardisierten
Iterator
undStopIteration
Objekte sowie das ältere Iterationsprotokoll wurden entfernt (Firefox Bug 1098412). - Der Async-Generator ist nun aktiviert (Firefox Bug 1352312).
- for await (... of ...) Syntax ist nun aktiviert (Firefox Bug 1352312).
APIs
Neue APIs
- Die
PerformanceObserver
API ist jetzt standardmäßig aktiviert (Firefox Bug 1386021). - Die
AbortController
undAbortSignal
Schnittstellen (bekannt als die Abort API) wurden hinzugefügt, sodass DOM-Anfragen (wie fetch-Anfragen) bei Bedarf abgebrochen werden können (Firefox Bug 1378342). - [2] Die Storage API ist implementiert und standardmäßig aktiviert (Firefox Bug 1399038).
DOM
- Die
Selection.type
Eigenschaft der Selection API ist nun implementiert (Firefox Bug 1359157). Document.createEvent('FocusEvent')
wird jetzt unterstützt (Firefox Bug 1388069).- Die
files
Eigenschaft derHTMLInputElement
Schnittstelle ist nun setzbar (Firefox Bug 1384030). - Die
HTMLDocument.getSelection()
Methode wurde in dieDocument
Schnittstelle verschoben, sodass sie auch in XML-Dokumenten verfügbar ist (Firefox Bug 718711). - Das
messageerror
Ereignis ist nun implementiert, und es kann Code ausgeführt werden, als Reaktion auf dessen Auftreten über Ereignishandler, die auf Nachrichtenzielen implementiert sind — siehe dasmessageerror
Ereignis vonMessagePort
,DedicatedWorkerGlobalScope
,Worker
,BroadcastChannel
undWindow
(Firefox Bug 1359017). - Wenn über
Headers
Werte iteriert wird, werden sie automatisch in lexikografischer Reihenfolge sortiert und die Werte von doppelten Headernamen kombiniert (Firefox Bug 1396848).
DOM-Ereignisse
Keine Änderungen.
Medien und WebRTC
-
Unterstützung für Nachrichten beliebiger Größe (bis zu 1GiB, obwohl 256kiB interoperabler ist) wird nun auf
RTCDataChannel
durch die Verwendung des End-of-Record (EOR) Flags auf SCTP-Nachrichten unterstützt. Siehe Verständnis von Nachrichtenbeschränkungen für weitere Informationen (Firefox Bug 979417).Hinweis: Da Firefox das SCTP Stream Schedulers and User Message Interleaving Protokoll, das die Fähigkeit bietet, SCTP-Nachrichten von mehreren Quellen zu unterbrechen, noch nicht unterstützt, kann das Senden großer Datenobjekte erhebliche Verzögerungen bei allen anderen SCTP-Verkehr verursachen. Siehe Firefox Bug 1381145, um den Fortschritt bei der Implementierung und Bereitstellung der Stream Scheduler-Unterstützung in Firefox zu verfolgen.
-
Die Methode
RTCDataChannel.send()
kann jetzt eineTypeError
Ausnahme werfen, wenn die Größe der Nachricht, die Sie senden möchten, nicht mit dem empfangenden user agent kompatibel ist (dies ist als Teil von Firefox Bug 979417 implementiert). -
Die MediaStream Recording API wurde aktualisiert, sodass
error
Ereignisse, die gesendet werden um Probleme beim Aufzeichnen zu melden, jetzt vom TypMediaRecorderErrorEvent
sind, anstatt generische Ereignisse zu sein. -
Die Dokumentation zu
OfflineAudioContext
wurde aktualisiert, da die Eingaben des Konstrukteurs nun in einem Objekt anstatt als eine Liste von Parametern spezifiziert werden können (Firefox Bug 1388591). -
Die Web Audio API unterstützt jetzt ordnungsgemäß mehrkanaligen Ausgang (Firefox Bug 1378070).
Sicherheit
resource://
URLs leaken keine Informationen mehr (Firefox Bug 863246)- Daten-URLs werden jetzt als eindeutige opake Ursprünge behandelt, anstatt den Ursprung des Navigationskontextes zu erben (Firefox Bug 1324406).
Plugins
Keine Änderungen.
Sonstiges
- Firefox headless mode beinhaltet jetzt ein
-screenshot
Flag, das Ihnen erlaubt, Website-Screenshots direkt von der Kommandozeile aus zu machen (Firefox Bug 1378010).
Entfernungen von der Webplattform
HTML
<link rel="preload">
(siehe Vorladen von Inhalten mit rel="preload") wurde in Firefox 57 deaktiviert aufgrund verschiedener Web-Kompatibilitätsprobleme (z.B. Firefox Bug 1405761). Eine verbesserte Version, die auch für nicht cachebare Ressourcen funktioniert, wird in Firefox 58 erwartet.
APIs
- Mozillas proprietäre Social API wurde vollständig entfernt (Firefox Bug 1388902).
SVG
Keine Änderungen.
Änderungen für Add-on- und Mozilla-Entwickler
Hinweis: Ab Firefox 57 wurde jegliche Unterstützung für auf XPCOM basierende Add-ons entfernt. Alle Erweiterungen müssen in die neuen Browser-Erweiterungen (auch bekannt als WebExtensions) umgewandelt werden, sonst funktionieren sie nicht.
WebExtensions
Die folgenden APIs wurden hinzugefügt oder erweitert:
-
- Unterstützung für Separatoren durch
bookmarks.BookmarkTreeNodeType
- Unterstützung für Separatoren durch
-
theme_icons
Eigenschaft für hell/dunkel Thema Icons
-
onCreated
onRemoved
onUpdated
colorCode
undiconUrl
incontextualIdentities.ContextualIdentity
-
incognito
Option indownloads.download()
estimatedEndTime
Eigenschaft indownloads.DownloadItem
-
FindProxyForURL()
kann jetzt ein Objekt zurückgeben
-
runtime.openOptionsPage()
Unterstützung auf Android
-
loadReplace
Option intabs.update()
discarded
Eigenschaft intabs.Tab
,tabs.onUpdated
undtabs.query()
tabs.create()
kann "view-source:" URLs öffnenopenerTabId
Eigenschaft intabs.Tab
,tabs.create()
,tabs.query()
undtabs.update()
-
colors.toolbar
colors.toolbar_field
colors.toolbar_field_text
colors.toolbar_text
-
windowId
Option zutheme.update()
-
filterResponseData()
proxyInfo
Eigenschaft inwebRequest
Ereignissen
-
allowScriptsToClose
Option inwindows.create()