Firefox 51: Versionshinweise für Entwickler
Um die neuesten Entwicklerfunktionen von Firefox zu testen, installieren Sie Firefox Developer Edition. Firefox 51 wurde am 24. Januar 2017 veröffentlicht. Dieser Artikel führt wichtige Änderungen auf, die nicht nur für Webentwickler, sondern auch für Firefox- und Gecko-Entwickler sowie Add-on-Entwickler nützlich sind.
Änderungen für Webentwickler
>Entwicklerwerkzeuge
HTML
<hr>-Elemente können jetzt als Trennzeichen in<menu>-Elementen verwendet werden (Firefox-Bug 870388).- Die Attribute
selectionStartundselectionEndder Elemente<input>und<textarea>geben jetzt bei fehlender Auswahl korrekt die aktuelle Position des Texteingabecursors zurück, anstatt 0 zurückzugeben (Firefox-Bug 1287655).
CSS
:indeterminatefür <input type="radio"> implementiert (Firefox-Bug 885359).:placeholder-shownfür<input type="text">implementiert (Firefox-Bug 1069015).- Das Pseudoelement
::placeholderist jetzt ohne Präfix verfügbar (Firefox-Bug 1069012). - Die CSS-Pseudoklasse
:validwurde korrigiert, die nicht mit gültigen<form>-Elementen übereinstimmte (Firefox-Bug 1285425). - Der Wert
plaintextvonunicode-bidifunktioniert jetzt auch mit vertikalen Schreibrichtungen (Firefox-Bug 1302734). - Die Werte
fill-boxundstroke-boxvonclip-pathwerden jetzt korrekt unterstützt; zuvor waren sie Aliase fürborder-box(Firefox-Bug 1289011). - Die Höhe von Flex-Zeilen wird in einzeiligen Flex-Containern mit automatischer Höhe und
max-heightbegrenzt, wodurch gestreckte Flex-Elemente begrenzt werden (Spezifikationsänderung) (Firefox-Bug 1000957).
JavaScript
- Die ES2015-Eigenschaft
Symbol.toStringTagwurde implementiert (Firefox-Bug 1114580). - Die ES2015-Methoden
TypedArray.prototype.toString()undTypedArray.prototype.toLocaleString()wurden implementiert (Firefox-Bug 1121938). - Die Methode
DateTimeFormat.prototype.formatToParts()ist jetzt verfügbar (Firefox-Bug 1289340). constundletentsprechen jetzt vollständig ES2015 (Firefox-Bug 950547).- Die Verwendung von
constinfor...of-Schleifen verfügt jetzt für jede Iteration über eine neue Bindung und löst keinenSyntaxErrormehr aus (Firefox-Bug 1101653). - Die veraltete
for each...in-Schleife zeigt jetzt eine Warnung in der Konsole an (Firefox-Bug 1293205). Migrieren Sie Ihren Code bitte zur standardisiertenfor...of-Schleife. - Generatorfunktionen können nicht mehr über ein Label verfügen, und
letist jetzt als Labelname nicht zulässig (Firefox-Bug 1288459). - Veraltete Legacy-Generatorfunktionen lösen jetzt bei Verwendung in Methodendefinitionen einen Fehler aus (Firefox-Bug 1199296).
- Die Methode
next()des Iterator-Protokolls löst jetzt einenTypeErroraus, wenn der zurückgegebene Wert kein Objekt ist (Firefox-Bug 1016936). - Pseudoklassen-Selektoren mit Kindindex sollten auch ohne Elternelement übereinstimmen (Firefox-Bug 1300374).
WebGL
-
WebGL 2 ist jetzt standardmäßig aktiviert. Einige Demos finden Sie unter webglsamples.org/WebGL2Samples.
- WebGL 2 stellt die Schnittstelle
WebGL2RenderingContextbereit, die OpenGL ES 3.0 zum<canvas>-Element bringt. - Neue Funktionen umfassen:
- 3D-Texturen,
- Sampler-Objekte,
- Uniform-Buffer-Objekte,
- Sync-Objekte,
- Query-Objekte,
- Transform-Feedback-Objekte,
- Erweiterungen, die jetzt Bestandteil von WebGL 2 sind: Vertex-Array-Objekte, Instancing, mehrere Render-Ziele, Fragmenttiefe.
- WebGL 2 stellt die Schnittstelle
-
Die Erweiterung
WEBGL_compressed_texture_es3(in Firefox 46 implementiert) wurde inWEBGL_compressed_texture_etcumbenannt (Firefox-Bug 1316778) und ist in WebGL-2-Kontexten nicht mehr standardmäßig enthalten (Firefox-Bug 1306174). -
Die Erweiterung
EXT_disjoint_timer_querywurde aktualisiert, sodass sieWebGLQuery-Objekte anstelle vonWebGLTimerQuery-Objekten verwendet (Firefox-Bug 1308057). -
Die Erweiterung
OES_vertex_array_objectverwendet jetzt das WebGL-2-ObjektWebGLVertexArrayObjectanstelle ihres eigenenWebGLVertexArrayObjectOES-Objekts (Firefox-Bug 1318523). -
Sie können jetzt
ImageBitmap-Objekte als Quellen für Texturbilder in Methoden wieWebGLRenderingContext.texImage2D(),WebGLRenderingContext.texSubImage2D(),WebGL2RenderingContext.texImage3D()oderWebGL2RenderingContext.texSubImage3D()verwenden (Firefox-Bug 1324924).
IndexedDB v2
- Die Implementierung von IndexedDB Version 2 ist jetzt vollständig:
- Unterstützung für die neue Methode
IDBObjectStore.getKey()wurde hinzugefügt (Firefox-Bug 1271506). - Unterstützung für die Methode
IDBCursor.continuePrimaryKey()wurde hinzugefügt (Firefox-Bug 1271505). - Binäre Schlüssel werden jetzt unterstützt (Firefox-Bug 1271500).
- Siehe auch „What's new in IndexedDB 2.0?“ – Mozilla hacks
- Unterstützung für die neue Methode
Canvas
- Die nicht standardisierte Methode
CanvasRenderingContext2D.mozFillRule()wurde entfernt; die Füllregel kann mithilfe eines Parameters der StandardmethodeCanvasRenderingContext2D.fill()festgelegt werden (Firefox-Bug 826619). CanvasRenderingContext2D.imageSmoothingEnabledist jetzt ohne Präfix verfügbar (Firefox-Bug 768072)
SVG
- Das Attribut
tabindexwurde hinzugefügt (Firefox-Bug 778654). - Das Attribut
hrefwurde hinzugefügt, wodurchxlink:hrefobsolet wird (Firefox-Bug 1245751). - Sie können jetzt benutzerdefinierte Datenattribute auf SVG-Elementen über die Eigenschaft
HTMLElement.datasetund den Satz von SVG-Attributendata-*verwenden (Firefox-Bug 921834). - CSS-Animationen, die in einem SVG-Bild verwendet werden, das in einem
<img>-Element dargestellt wird, funktionieren jetzt wieder; dies war eine frühere Regression (Firefox-Bug 1190881).
Web Workers
- Der nicht standardisierte und veraltete
onclose-Event-Handler sowie die Verwendung desclose-Ereignisses durchWorkerwurden aus Firefox entfernt.
Netzwerk
- Skripte, die mit einem MIME-Typ
image/*,video/*,audio/*odertext/csvbereitgestellt werden, werden jetzt blockiert und weder geladen noch ausgeführt. Dies geschieht, wenn sie mit<script>deklariert oder überWorkerGlobalScope.importScripts(),Worker()oderSharedWorker()geladen werden (Firefox-Bug 1229267 und Firefox-Bug 1288361). - Die Unterstützung für SHA-1-Zertifikate von öffentlich vertrauenswürdigen Zertifizierungsstellen wurde entfernt (Firefox-Bug 1302140). Weitere Informationen finden Sie unter Phasing Out SHA-1 on the Public Web.
- Neue WoSign- und StartCom-Zertifikate werden nicht mehr akzeptiert (Firefox-Bug 1309707); weitere Informationen finden Sie unter Distrusting New WoSign and StartCom Certificates.
- Die PAC-Funktion
FindProxyForURL(url, host)entfernt jetzt Pfade und Abfragen aus https://-URLs, um Informationslecks zu vermeiden (siehe Firefox-Bug 1255474 und CVE-2017-5384).
XHR
- Die Eigenschaft
XMLHttpRequest.responseXMLgibt bei einem Parse-Fehler beim Interpretieren der empfangenen Daten nicht mehr ein unvollständigesDocumentzurück, an dessen Anfang sich ein <parsererror>-Knoten befindet. Stattdessen gibt sie jetzt korrektnullzurück (Firefox-Bug 289714). - Um der neuesten Spezifikation zu entsprechen, wird ein
XMLHttpRequestohne einen mitsetRequestHeader()gesetztenAccept-Header jetzt mit einem solchen Header gesendet, dessen Wert auf*/*gesetzt ist (Firefox-Bug 918752). XMLHttpRequest.open()wurde korrigiert, sodass die Parameterusernameundpasswordbei Auslassung gemäß Spezifikation jetzt standardmäßignullentsprechen (Firefox-Bug 933759).
WebRTC
- Die Methode
RTCPeerConnection.removeStream()wurde entfernt. Sie war bereits in Firefox 22 veraltet und löste seit Langem eineNotSupportedError-DOMExceptionaus. Verwenden Sie stattdessen für jeden Track des StreamsRTCPeerConnection.removeTrack(). - WebRTC unterstützt jetzt standardmäßig den VP9-Codec. Als VP9 in Firefox 46 hinzugefügt wurde, war es standardmäßig deaktiviert, bei Aktivierung jedoch der bevorzugte Codec. Aufgrund seiner derzeitigen CPU-Auslastung wurde es jedoch zur zweiten Wahl nach VP8.
- Die Methode
HTMLMediaElement.captureStream(), die einenMediaStreamzurückgibt, der den Inhalt des angegebenen<video>- oder<audio>-Elements enthält. Beachten Sie, dass sie weiterhin das PräfixmozCaptureStream()besitzt und noch nicht exakt der Spezifikation entspricht.
Audio/Video
- FLAC-Unterstützung (FLAC-Codec) wurde sowohl in FLAC- als auch in Ogg-Containern hinzugefügt (Firefox-Bug 1195723). Unterstützte FLAC-MIME-Typen sind:
audio/flacundaudio/x-flac. Für FLAC in Ogg sind die unterstützten MIME-Typen:audio/ogg; codecs=flacundvideo/ogg; codecs=flac. - Unterstützung für FLAC in MP4 wurde hinzugefügt, sowohl mit als auch ohne MSE (Firefox-Bug 1303888).
- Die Drosselung in Hintergrund-Tabs von Timern, die durch
Window.setInterval(),WorkerGlobalScope.setInterval(),setTimeout()undsetTimeout()erstellt werden, wurde in Firefox 50 so geändert, dass sie nicht mehr erfolgt, wenn einAudioContextder Web Audio API aktiv Ton wiedergibt. Dadurch wurden jedoch nicht alle Szenarien behoben, in denen zeitkritische Audiowiedergabe – etwa Musikplayer, die einzelne Noten mithilfe von Timern erzeugen – nicht ordnungsgemäß funktionieren konnte. Deshalb drosselt Firefox 51 Hintergrund-Tabs mit einemAudioContextnicht mehr, selbst wenn dieser derzeit keinen Ton wiedergibt.
DOM
DOMImplementation.hasFeature()gibt jetzt in allen Fällentruezurück (Firefox-Bug 984778).- Die Eigenschaften
selectionStartundselectionEndvonHTMLInputElementundHTMLTextAreaElementgeben jetzt bei fehlender Auswahl korrekt die aktuelle Position des Texteingabecursors zurück, anstatt 0 zurückzugeben (Firefox-Bug 1287655). - Die Schnittstelle
HTMLImageElementund das entsprechende<img>-Element unterstützen jetzt denonerror-Event-Handler und sendenerror-Ereignisse an das Element, wenn beim Laden oder Interpretieren von Bildern Fehler auftreten. - Sie können jetzt den Effekt einer Web-
Animationändern, indem Sie den Wert ihrer Eigenschafteffectsetzen. Zuvor war diese Eigenschaft schreibgeschützt (Firefox-Bug 1049975). - Die Permissions-API-Methode
Permissions.revoke()wurde hinter eine Präferenz (dom.permissions.revoke.enable) gestellt und ist standardmäßig deaktiviert, da ihr Design und selbst ihre Existenz in der Web Application Security Working Group diskutiert werden. - Die Eigenschaft
Navigator.storageund die MethodeStorageManager.estimate()der Storage API wurden zusammen mit dem erforderlichen unterstützenden Code implementiert. Funktionen zur Persistenz von Speichereinheiten sind noch nicht implementiert. Siehe Firefox-Bug 1267941. - Aus Datenschutzgründen runden sowohl
BatteryManager.chargingTimeals auchBatteryManager.dischargingTimeden zurückgegebenen Wert jetzt auf die nächsten 15 Minuten (Firefox-Bug 1292655).
Ereignisse
- Firefox unterstützt jetzt die Event-Handler
onanimationstart,onanimationiterationundonanimationend, zusätzlich zur Unterstützung der entsprechenden Ereignisse mitaddEventListener()(Firefox-Bug 911987). - Firefox unterstützt jetzt den Event-Handler
ontransitionend(Firefox-Bug 911987).
Sicherheit
- Wenn Anmeldeseiten – also Seiten mit einem Feld
<input type="password">– so erstellt werden, dass sie unsicher übermittelt würden, zeigt Firefox in der Adressleiste ein durchgestrichenes Schlosssymbol an, um Benutzer zu warnen (Firefox-Bug 1319119).
Entfernt
- Die nicht standardisierte Simple Push API, die hauptsächlich für Firefox OS vorgesehen war und mittlerweile durch die W3C Push API ersetzt wurde, wurde vollständig aus Gecko entfernt (Firefox-Bug 1296579).
- Die nicht standardisierte Alarms API, die hauptsächlich für Firefox OS vorgesehen war, wurde vollständig aus Gecko entfernt (Firefox-Bug 1300884).
- Die Unterstützung für Präfixe in der Page Visibility API wurde entfernt (Firefox-Bug 812701).
Änderungen für Add-on- und Mozilla-Entwickler
>WebExtensions
-
Neue APIs:
-
Sie können jetzt eine WebExtension in einen Legacy-Add-on-Typ einbetten (Firefox-Bug 1252215).
-
Zugriff auf die Zwischenablage wird jetzt unterstützt (Firefox-Bug 1197451)
-
Die an den Callback von
tabs.executeScript()übergebenen Argumente wurden korrigiert (Firefox-Bug 1290157) -
localStorage wird jetzt gelöscht, wenn eine WebExtension deinstalliert wird (Firefox-Bug 1213990)
-
Ein geänderter
Content-Type-Header in WebExtensions wird jetzt berücksichtigt (Firefox-Bug 1304331)
Sonstiges
-
Die
multiprocessCompatible-Eigenschaft voninstall.rdfmuss jetzt explizit auffalsegesetzt werden, damit beim Installieren des Add-ons Multiprocess nicht in Firefox aktiviert wird. -
Die Mozilla-spezifische Social API wurde erheblich geändert, hauptsächlich um nicht mehr verwendete APIs zu entfernen:
- Die Schnittstelle
MozSocialund die sie unterstützende EigenschaftNavigator.mozSocialwurden entfernt. - Die Social Bookmarks API wurde entfernt.
- Die Social-Chat-Funktionalität wurde entfernt.
- Die Social Status API wurde entfernt.
- Alle Social-Widgets mit Ausnahme des Share-Panels wurden entfernt. Dies umfasst die soziale Seitenleiste, Flyover-Panels und weitere Komponenten.
- Alle unterstützenden Benutzeroberflächenfunktionen und Funktionalitäten für die entfernten APIs wurden ebenfalls entfernt.
- Manifest-Eigenschaften von Social-Service-Anbietern, die die entfernte Funktionalität unterstützen, werden nicht mehr unterstützt.
- Die Schnittstelle
-
Wenn ein Add-on
mimeTypes.rdfverwendet, um eine Zuordnung von Dateierweiterungen zu MIME-Typen bereitzustellen, muss es jetzt einen Eintrag in der Kategorie"ext-to-type-mapping"registrieren (Firefox-Bug 306471). -
Die Browser API enthält jetzt ein
detail-Objekt im Ereignisobjekt desmozbrowserlocationchange-Ereignisses, das die EigenschaftencanGoForward/canGoBackenthält und damit das synchrone Abrufen des Zurück-/Vorwärtsstatus von mozBrowser ermöglicht (Firefox-Bug 1279635).