Firefox 51 für Entwickler
Um die neuesten Entwicklerfunktionen von Firefox zu testen, installieren Sie die Firefox Developer Edition. Firefox 51 wurde am 24. Januar 2017 veröffentlicht. Dieser Artikel listet wichtige Änderungen auf, die nicht nur für Webentwickler nützlich sind, sondern auch für Entwickler von Firefox, Gecko und Add-ons.
Änderungen für Webentwickler
HTML
<hr>
-Elemente können jetzt als Trennzeichen in<menu>
-Elementen verwendet werden (Firefox-Bug 870388).- Die
selectionStart
undselectionEnd
Attribute der<input>
- und<textarea>
-Elemente geben jetzt korrekterweise die aktuelle Position des Texteingabe-Cursors zurück, wenn keine Auswahl vorhanden ist, anstatt 0 zurückzugeben (Firefox-Bug 1287655).
CSS
:indeterminate
für <input type="radio"> implementiert (Firefox-Bug 885359).:placeholder-shown
für<input type="text">
implementiert (Firefox-Bug 1069015).- Das
::placeholder
Pseudo-Element ist jetzt ohne Präfix verfügbar (Firefox-Bug 1069012). - Die
:valid
CSS-Pseudoklasse wurde korrigiert, die gültige<form>
-Elemente nicht korrekt erkannte (Firefox-Bug 1285425). - Der
plaintext
Wert vonunicode-bidi
funktioniert jetzt auch mit vertikalen Schreibmodi (Firefox-Bug 1302734). - Die
fill-box
undstroke-box
Werte vonclip-path
werden jetzt richtig unterstützt; zuvor waren sie Aliase vonborder-box
(Firefox-Bug 1289011). - Flexlinienhöhe, die gestreckte Flex-Elemente begrenzt, in einzeiligen Auto-Höhe-Flex-Containern mit max-height angepasst (Spezifikationsänderung) (Firefox-Bug 1000957).
JavaScript
- Die ES2015
Symbol.toStringTag
Eigenschaft wurde implementiert (Firefox-Bug 1114580). - Die ES2015
TypedArray.prototype.toString()
undTypedArray.prototype.toLocaleString()
Methoden wurden implementiert (Firefox-Bug 1121938). - Die Methode
DateTimeFormat.prototype.formatToParts()
ist jetzt verfügbar (Firefox-Bug 1289340). const
undlet
sind jetzt vollständig ES2015-konform (Firefox-Bug 950547).- Die Verwendung von
const
infor...of
Schleifen hat jetzt für jede Iteration eine frische Bindung und löst keinenSyntaxError
mehr aus (Firefox-Bug 1101653). - Die veraltete
for each...in
Schleife zeigt nun eine Warnung in der Konsole an (Firefox-Bug 1293205). Bitte aktualisieren Sie Ihren Code zur Verwendung der standardisiertenfor...of
Schleife. - Generatorfunktionen können keine Labels mehr haben, und
let
als Labelname ist jetzt nicht mehr erlaubt (Firefox-Bug 1288459). - Veraltete Legacy-Generatorfunktionen werfen jetzt einen Fehler, wenn sie in Methodendefinitionen verwendet werden (Firefox-Bug 1199296).
- Die
next()
Methode des Iterator-Protokolls wirft jetzt einenTypeError
, wenn der zurückgegebene Wert kein Objekt ist (Firefox-Bug 1016936). - Kind-indizierte Pseudoklassen-Selektoren sollten ohne Elternteil übereinstimmen (Firefox-Bug 1300374).
Entwicklerwerkzeuge
WebGL
-
WebGL 2 ist jetzt standardmäßig aktiviert. Siehe webglsamples.org/WebGL2Samples für ein paar Demos.
- WebGL 2 bietet das
WebGL2RenderingContext
Interface, das OpenGL ES 3.0 für das<canvas>
Element bereitstellt. - Neue Funktionen umfassen:
- 3D-Texturen,
- Sampler-Objekte,
- Uniform Buffer-Objekte,
- Sync-Objekte,
- Query-Objekte,
- Transform Feedback-Objekte,
- Beförderte Erweiterungen, die jetzt Bestandteil von WebGL 2 sind: Vertex Array-Objekte, Instancing, mehrere Renderziele, Fragment-Tiefe.
- WebGL 2 bietet das
-
Die
WEBGL_compressed_texture_es3
-Erweiterung (implementiert in Firefox 46) wurde inWEBGL_compressed_texture_etc
umbenannt (Firefox-Bug 1316778) und ist in WebGL 2-Kontexten nicht mehr standardmäßig enthalten (Firefox-Bug 1306174). -
Die
EXT_disjoint_timer_query
-Erweiterung wurde aktualisiert, umWebGLQuery
-Objekte anstelle vonWebGLTimerQuery
-Objekten zu verwenden (Firefox-Bug 1308057). -
Die
OES_vertex_array_object
-Erweiterung verwendet jetzt das WebGL 2WebGLVertexArrayObject
-Objekt anstelle ihres eigenenWebGLVertexArrayObjectOES
-Objekts (Firefox-Bug 1318523). -
Sie können jetzt
ImageBitmap
-Objekte als Quellen für Textur-Bilder in Methoden wieWebGLRenderingContext.texImage2D()
,WebGLRenderingContext.texSubImage2D()
,WebGL2RenderingContext.texImage3D()
oderWebGL2RenderingContext.texSubImage3D()
verwenden (Firefox-Bug 1324924).
IndexedDB v2
- Die Implementierung von IndexedDB Version 2 ist jetzt abgeschlossen:
- Unterstützung für die neue
IDBObjectStore.getKey()
Methode wurde hinzugefügt (Firefox-Bug 1271506). - Unterstützung für die
IDBCursor.continuePrimaryKey()
Methode 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
Canvas
- Die nicht standardisierte Methode
CanvasRenderingContext2D.mozFillRule()
wurde entfernt; die Füllregel kann jetzt mit einem Parameter der standardisiertenCanvasRenderingContext2D.fill()
Methode definiert werden (Firefox-Bug 826619). - Die
CanvasRenderingContext2D.imageSmoothingEnabled
wurde ohne Präfix implementiert (Firefox-Bug 768072)
SVG
- Das
tabindex
-Attribut wurde hinzugefügt (Firefox-Bug 778654). - Das
href
-Attribut wurde hinzugefügt, wodurchxlink:href
obsolet wird (Firefox-Bug 1245751). - Sie können jetzt benutzerdefinierte Datenattribute auf SVG-Elementen über die
HTMLElement.dataset
-Eigenschaft und dasdata-*
-Set von SVG-Attributen verwenden (Firefox-Bug 921834). - CSS-Animationen, die in einem SVG-Bild verwendet werden, das in einem
<img>
-Element angezeigt wird, funktionieren jetzt wieder; dies war ein alter Regressionseffekt (Firefox-Bug 1190881).
Web Workers
- Der nicht standardisierte und veraltete
onclose
Ereignis-Handler und die Verwendung vonclose
-Ereignissen durchWorker
wurden aus Firefox entfernt.
Netzwerk
- Skripte, die mit einem
image/*
,video/*
,audio/*
odertext/csv
MIME-Type bereitgestellt werden, werden jetzt blockiert und nicht mehr geladen oder ausgeführt. Dies tritt auf, wenn sie mit<script>
deklariert werden oder überWorkerGlobalScope.importScripts()
,Worker()
oderSharedWorker()
geladen werden (Firefox-Bug 1229267 und Firefox-Bug 1288361). - Unterstützung für SHA-1-Zertifikate von öffentlich vertrauten Zertifizierungsstellen wurde entfernt (Firefox-Bug 1302140). Siehe auch Phasing Out SHA-1 on the Public Web für weitere Informationen.
- Neue WoSign und StartCom Zertifikate werden nicht länger akzeptiert (Firefox-Bug 1309707), siehe Distrusting New WoSign and StartCom Certificates für weitere Informationen.
- Die PAC
FindProxyForURL(url, host)
Funktion entfernt jetzt Pfade und Abfragen von https:// URLs, um Informationslecks zu vermeiden (siehe Firefox-Bug 1255474 und CVE-2017-5384).
XHR
- Die
XMLHttpRequest.responseXML
Eigenschaft kehrt nicht mehr partiellesDocument
mit einem <parsererror>-Knoten an der Spitze zurück, wenn ein Parsefehler beim Versuch auftritt, die empfangenen Daten zu interpretieren. Stattdessen gibt sie korrektnull
zurück (Firefox-Bug 289714). - Um mit der neuesten Spezifikation übereinzustimmen, wird eine
XMLHttpRequest
ohne einAccept
Header, gesetzt mitsetRequestHeader()
, jetzt mit solchem Header gesendet, dessen Wert auf*/*
gesetzt ist (Firefox-Bug 918752). XMLHttpRequest.open()
wurde korrigiert so, dass, wenn weggelassen, dieusername
undpassword
Parameter jetzt standardmäßig aufnull
gesetzt sind, gemäß der Spezifikation (Firefox-Bug 933759).
WebRTC
- Die
RTCPeerConnection.removeStream()
Methode wurde entfernt. Sie war seit Firefox 22 veraltet und hat lange einenNotSupportedError
DOMException
ausgelöst. Sie müssen stattdessenRTCPeerConnection.removeTrack()
verwenden, für jeden Track im Stream. - WebRTC unterstützt jetzt standardmäßig den VP9-Codec. Als er in Firefox 46 hinzugefügt wurde, war VP9 standardmäßig deaktiviert, aber wenn aktiviert, war es der bevorzugte Codec; er wurde jedoch auf die zweite Wahl (nach VP8) verschoben aufgrund des aktuellen CPU-Nutzungsgrades.
- Die Methode
HTMLMediaElement.captureStream()
, die einenMediaStream
zurückgibt, der den Inhalt des angegebenen<video>
oder<audio>
enthält. Es ist zu beachten, dass dies immer noch mit dem PräfixmozCaptureStream()
versehen ist und es noch nicht genau mit der Spezifikation übereinstimmt.
Audio/Video
- Unterstützung für FLAC hinzugefügt (FLAC Codec) in FLAC- und Ogg-Containern (Firefox-Bug 1195723). Unterstützte FLAC MIME-Typen sind:
audio/flac
undaudio/x-flac
. Für FLAC in Ogg sind unterstützte MIME-Typen:audio/ogg; codecs=flac
undvideo/ogg; codecs=flac
. - Unterstützung für FLAC in MP4 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 wurden, wurde in Firefox 50 so geändert, dass sie nicht mehr auftritt, wenn ein Web Audio APIAudioContext
aktiv Klang abspielt. Dies löste jedoch nicht alle Szenarien, in denen zeitlich empfindliche Audiowiedergabe (wie Musikplayer, die einzelne Noten durch Timer erzeugen) möglicherweise nicht korrekt funktionieren könnte. Aus diesem Grund drosselt Firefox 51 keine Hintergrund-Tabs mehr, die eineAudioContext
haben, auch wenn sie derzeit keinen Klang abspielen.
DOM
- Die
DOMImplementation.hasFeature()
Methode gibt jetzt immertrue
zurück (Firefox-Bug 984778). - Die
HTMLInputElement
undHTMLTextAreaElement
EigenschaftenselectionStart
undselectionEnd
geben jetzt korrekterweise die aktuelle Position des Texteingabe-Cursors zurück, wenn keine Auswahl vorhanden ist, anstatt 0 zurückzugeben (Firefox-Bug 1287655). - Die
HTMLImageElement
Schnittstelle und das entsprechende<img>
Element unterstützen jetzt denonerror
Ereignis-Handler und sendenerror
Events an das Element, wenn Fehler beim Laden oder Interpretieren von Bildern auftreten. - Sie können jetzt den Effekt einer Web-
Animation
ändern, indem Sie den Wert ihrereffect
Eigenschaft setzen. Zuvor war diese Eigenschaft schreibgeschützt (Firefox-Bug 1049975). - Die Permissions API Methode
Permissions.revoke()
wurde hinter einer Einstellung (dom.permissions.revoke.enable
) deaktiviert, da ihr Design und sogar ihre Existenz in der Web Application Security Working Group diskutiert wird. - Die Storage API verfügt jetzt über die
Navigator.storage
-Eigenschaft und dieStorageManager.estimate()
Methode, die zusammen mit dem benötigten unterstützenden Code implementiert wurden. Speichergeräte-Persistenzfunktionen sind noch nicht implementiert. Siehe Firefox-Bug 1267941. - Aus Datenschutzgründen runden sowohl
BatteryManager.chargingTime
als auchBatteryManager.dischargingTime
jetzt den zurückgegebenen Wert auf die nächsten 15 Minuten (Firefox-Bug 1292655).
Events
- Firefox unterstützt jetzt die Ereignis-Handler
onanimationstart
,onanimationiteration
undonanimationend
, zusätzlich zur Unterstützung der entsprechenden Ereignisse mitaddEventListener()
(Firefox-Bug 911987). - Firefox unterstützt jetzt den
ontransitionend
Ereignis-Handler (Firefox-Bug 911987).
Sicherheit
- Wenn Anmeldeseiten (d.h. solche, die ein
<input type="password">
Feld beinhalten) so erstellt werden, dass sie unsicher übermittelt werden könnten, zeigt Firefox ein durchgestrichenes Schloss-Symbol in der Adressleiste zur Warnung der Nutzer an (Firefox-Bug 1319119). Siehe Unsichere Passwörter für weitere Details.
Entfernungen
- Die nicht standardisierte Simple Push API, hauptsächlich für Firefox OS gedacht und mittlerweile durch die W3C Push API ersetzt, wurde vollständig aus Gecko entfernt (Firefox-Bug 1296579).
- Die nicht standardisierte Alarms API, hauptsächlich für Firefox OS gedacht, wurde vollständig aus Gecko entfernt (Firefox-Bug 1300884).
- 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 nun eine WebExtension in einen Legacy-Add-on-Typ einbetten (Firefox-Bug 1252215).
-
Zwischenablagezugriff 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 Web Extensions wird jetzt berücksichtigt (Firefox-Bug 1304331)
Sonstige
-
Die
multiprocessCompatible
Eigenschaft voninstall.rdf
muss jetzt explizit auffalse
gesetzt werden, um zu verhindern, dass Multiprozessbetrieb in Firefox aktiviert wird, wenn das Add-on installiert ist. -
Die Mozilla-spezifische Social API wurde erheblich geändert (weitgehend zum Entfernen von nicht mehr benötigten APIs), wie folgt:
- Das
MozSocial
-Interface und dieNavigator.mozSocial
-Eigenschaft, die es unterstützt, wurden entfernt. - Die Social Bookmarks API wurde entfernt.
- Die Social-Chat-Funktionalität wurde entfernt.
- Die Social Status API wurde entfernt.
- Alle sozialen Widgets, mit Ausnahme des Share-Panels, wurden entfernt. Dies umfasst die soziale Seitenleiste, Überflugpanels und so weiter.
- Alle unterstützenden Benutzeroberflächenfunktionen und Funktionalitätsmerkmale für die entfernten APIs wurden ebenfalls entfernt.
- Sozialdienst-Anbietermanifest-Eigenschaften, die die entfernte Funktionalität unterstützen, werden nicht mehr unterstützt.
- Das
-
Wenn ein Add-on
mimeTypes.rdf
verwendet, um eine Zuordnung von Dateiendung zu MIME-Typ bereitzustellen, muss es jetzt einen Eintrag in der"ext-to-type-mapping"
Kategorie registrieren (Firefox-Bug 306471). -
Die Browser API umfasst jetzt ein
detail
-Objekt im Ereignisobjekt desmozbrowserlocationchange
-Events, dascanGoForward
/canGoBack
Eigenschaften enthält, welche die Rückgabe des Satus von mozBrowser's zurück-/vorwärts Funktionalität synchron erlauben (Firefox-Bug 1279635).