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, sondern auch für Firefox- und Gecko-Entwickler sowie für Add-on-Entwickler nützlich sind.
Ä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 korrekt die aktuelle Position des Texteingabecursors 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).- Die
::placeholder
Pseudo-Element ist jetzt ohne Präfix (Firefox-Bug 1069012). - Der
:valid
CSS-Pseudoklasse, die keine gültigen<form>
-Elemente abgleichte, wurde behoben (Firefox-Bug 1285425). - Der
plaintext
-Wert vonunicode-bidi
funktioniert jetzt auch mit vertikalen Schreibrichtungen (Firefox-Bug 1302734). - Die Werte
fill-box
undstroke-box
vonclip-path
werden jetzt korrekt unterstützt; vorher waren sie Aliasnamen vonborder-box
(Firefox-Bug 1289011). - Die Höhe der Flexzeile klammern (an Flex-Elementen, die gestreckt sind), in einem einzeiligen Flex-Container mit automatischer Höhe und max-height (Spezifikationsänderung) (Firefox-Bug 1000957).
JavaScript
- Die ES2015
Symbol.toStringTag
-Eigenschaft wurde 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). const
undlet
sind jetzt vollständig ES2015-konform (Firefox-Bug 950547).- Die Verwendung von
const
infor...of
-Schleifen hat jetzt eine eigene Bindung für jede Iteration und wirft keinenSyntaxError
mehr (Firefox-Bug 1101653). - Die veraltete
for each...in
-Schleife zeigt jetzt eine Warnung in der Konsole an (Firefox-Bug 1293205). Bitte migrieren Sie Ihren Code zur standardisiertenfor...of
-Schleife. - Generatorfunktionen können nicht mehr mit einem Label verwendet werden, und
let
als Bezeichnername ist jetzt nicht mehr erlaubt (Firefox-Bug 1288459). - Veraltete Legacy-Generatorfunktionen führen jetzt zu einem Fehler bei der Verwendung in Methodendefinitionen (Firefox-Bug 1199296).
- Die
next()
-Methode des Iterator-Protokolls wird jetzt einenTypeError
werfen, wenn der zurückgegebene Wert kein Objekt ist (Firefox-Bug 1016936). - Kind-indizierte Pseudoklassen-Selektoren sollten ohne übergeordnetes Element übereinstimmen (Firefox-Bug 1300374).
Entwickler-Tools
WebGL
-
WebGL 2 ist jetzt standardmäßig aktiviert. Sehen Sie sich einige Demos auf webglsamples.org/WebGL2Samples an.
- WebGL 2 bietet die
WebGL2RenderingContext
-Schnittstelle, die OpenGL ES 3.0 in das<canvas>
-Element bringt. - Neue Funktionen umfassen:
- 3D-Texturen,
- Sampler-Objekte,
- Uniform Puffer-Objekte,
- Sync-Objekte,
- Query-Objekte,
- Transform Feedback-Objekte,
- Erweiterungen, die jetzt Kernbestandteil von WebGL 2 sind: Vertex Array Objekte, Instanstion, Mehrfach-Render-Ziele, Fragment-Tiefe.
- WebGL 2 bietet die
-
Die
WEBGL_compressed_texture_es3
-Erweiterung (implementiert in Firefox 46) wurde inWEBGL_compressed_texture_etc
umbenannt (Firefox-Bug 1316778) und ist nicht mehr standardmäßig in WebGL 2-Kontexten 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 Texturbilder in Methoden wieWebGLRenderingContext.texImage2D()
,WebGLRenderingContext.texSubImage2D()
,WebGL2RenderingContext.texImage3D()
oderWebGL2RenderingContext.texSubImage3D()
verwenden (Firefox-Bug 1324924).
IndexedDB v2
- Die Implementierung der IndexedDB Version 2 ist jetzt abgeschlossen:
- 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ärschlü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 standardmäßige Methode
CanvasRenderingContext2D.mozFillRule()
wurde entfernt; die Füllregel kann über einen Parameter der standardmäßigen MethodeCanvasRenderingContext2D.fill()
definiert werden (Firefox-Bug 826619). - Die Eigenschaft
CanvasRenderingContext2D.imageSmoothingEnabled
wurde unpräfigiert (Firefox-Bug 768072).
SVG
- Das Attribut
tabindex
wurde hinzugefügt (Firefox-Bug 778654). - Das Attribut
href
wurde hinzugefügt, dasxlink:href
obsolet macht (Firefox-Bug 1245751). - Sie können jetzt benutzerdefinierte Datenattribute auf SVG-Elementen über die
HTMLElement.dataset
-Eigenschaft und diedata-*
-Gruppe von SVG-Attributen verwenden (Firefox-Bug 921834). - CSS-Animationen, die in einem SVG-Bild verwendet werden, das in einem
<img>
-Element präsentiert wird, funktionieren jetzt wieder; dies war ein alter Fehler (Firefox-Bug 1190881).
Web Workers
- Der nicht standardmäßige und veraltete
onclose
-Ereignishandler und die Verwendung desclose
-Ereignisses inWorker
wurden aus Firefox entfernt.
Networking
- Skripte, die mit einem
image/*
,video/*
,audio/*
odertext/csv
MIME-Typ bereitgestellt werden, werden jetzt blockiert und nicht geladen oder ausgeführt. Dies geschieht, wenn sie mit<script>
deklariert oder überWorkerGlobalScope.importScripts()
,Worker()
,SharedWorker()
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). Siehe auch Phasing Out SHA-1 on the Public Web für weitere Informationen.
- Neue WoSign- und StartCom-Zertifikate werden nicht mehr akzeptiert (Firefox-Bug 1309707), siehe Distrusting New WoSign and StartCom Certificates für weitere Informationen.
- Die PAC-Funktion
FindProxyForURL(url, host)
entfernt jetzt Pfade und Anfragen aus https:// URLs, um Informationslecks zu vermeiden (siehe Firefox-Bug 1255474 und CVE-2017-5384).
XHR
- Die Eigenschaft
XMLHttpRequest.responseXML
gibt bei einem Parserfehler nicht mehr ein teilweisesDocument
mit einem <parsererror>-Knoten an der Spitze zurück. Stattdessen gibt sie korrektnull
zurück (Firefox-Bug 289714). - Um der neuesten Spezifikation zu entsprechen, wird ein
XMLHttpRequest
ohne ein mitsetRequestHeader()
gesetztesAccept
-Header jetzt mit einem solchen Header gesendet, dessen Wert auf*/*
gesetzt ist (Firefox-Bug 918752). XMLHttpRequest.open()
wurde behoben, sodass, wenn sie ausgelassen werden, dieusername
- undpassword
-Parameter jetzt standardmäßig aufnull
gesetzt werden, gemäß der Spezifikation (Firefox-Bug 933759).
WebRTC
- Die Methode
RTCPeerConnection.removeStream()
wurde entfernt. Sie war bereits in Firefox 22 obsolet und hat seit langem einenNotSupportedError
DOMException
geworfen. Sie müssen stattdessen für jede Spur denRTCPeerConnection.removeTrack()
verwenden. - WebRTC unterstützt jetzt standardmäßig den VP9-Codec. Als er in Firefox 46 hinzugefügt wurde, war VP9 standardmäßig deaktiviert, jedoch der bevorzugte Codec, wenn aktiviert; er wurde jedoch aufgrund seines aktuellen CPU-Verbrauchs als zweite Wahl (nach VP8) verschoben.
- Die Methode
HTMLMediaElement.captureStream()
, die einenMediaStream
mit dem Inhalt des angegebenen<video>
oder<audio>
zurückgibt. Beachten Sie, dass sie immer noch alsmozCaptureStream()
vorgeprägt ist und noch nicht genau der Spezifikation entspricht.
Audio/Video
- Unterstützung für FLAC hinzugefügt (FLAC-Codec) in sowohl FLAC- als auch 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).
- Das Drosseln in Hintergrund-Tabs von Timern, die durch
Window.setInterval()
,WorkerGlobalScope.setInterval()
,setTimeout()
undsetTimeout()
erstellt wurden, wurde in Firefox 50 geändert, sodass kein Drosseln mehr auftritt, wenn ein Web Audio APIAudioContext
aktiv Klang abspielt. Dies löste jedoch nicht alle Szenarien, in denen zeitkritische Audiowiedergabe (wie Musikplayer, die einzelne Noten mit Timern erzeugen) möglicherweise nicht richtig funktioniert. Aus diesem Grund drosselt Firefox 51 keine Hintergrund-Tabs mehr, die einAudioContext
haben, selbst wenn es derzeit keinen Klang abspielt.
DOM
- Die Methode
DOMImplementation.hasFeature()
gibt jetzt in allen Fällentrue
zurück (Firefox-Bug 984778). - Die Eigenschaften
selectionStart
undselectionEnd
vonHTMLInputElement
undHTMLTextAreaElement
geben nun korrekt die aktuelle Position des Texteingabecursors zurück, wenn keine Auswahl vorhanden ist, anstatt 0 zu retournieren (Firefox-Bug 1287655). - Die Schnittstelle
HTMLImageElement
und das entsprechende<img>
-Element unterstützen jetzt denonerror
-Ereignishandler und sendenerror
-Ereignisse an das Element, wann immer Fehler beim Laden oder Interpretieren von Bildern auftreten. - Sie können nun einen Web-Animationseffekt ändern, indem Sie den Wert seiner
effect
-Eigenschaft einstellen. Zuvor war diese Eigenschaft nur lesbar (Firefox-Bug 1049975). - Die Methode
Permissions.revoke()
der Permissions API wurde hinter einer Einstellung (dom.permissions.revoke.enable
) platziert und standardmäßig deaktiviert, da ihr Design und sogar ihre Existenz in der Web Application Security Working Group diskutiert werden. - Die
Navigator.storage
-Eigenschaft und die MethodeStorageManager.estimate()
der Storage API wurden zusammen mit dem notwendigen unterstützenden Code implementiert. Funktionen zur Persistenz von Speichereinheiten 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).
Ereignisse
- Firefox unterstützt jetzt die Ereignishandler
onanimationstart
,onanimationiteration
undonanimationend
, zusätzlich zu den entsprechenden Ereignissen, die mitaddEventListener()
unterstützt werden (Firefox-Bug 911987). - Firefox unterstützt jetzt den
ontransitionend
-Ereignishandler (Firefox-Bug 911987).
Sicherheit
- Wenn Anmeldeseiten (d.h. solche, die ein
<input type="password">
-Feld enthalten) so erstellt werden, dass sie unsicher übermittelt würden, zeigt Firefox ein durchgestrichenes Schlosssymbol in der Adressleiste an, um Benutzer zu warnen (Firefox-Bug 1319119). Weitere Details finden Sie unter Insecure passwords.
Entfernungen
- Die nicht standardmäßige Simple Push API, die hauptsächlich für Firefox OS gedacht war und jetzt durch die W3C Push API ersetzt wird, wurde vollständig aus Gecko entfernt (Firefox-Bug 1296579).
- Die nicht standardisierte Alarms API, die hauptsächlich für Firefox OS gedacht 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 einem legacy Add-on-Typ einbetten (Firefox-Bug 1252215).
-
Zwischenablagezugriff wird jetzt unterstützt (Firefox-Bug 1197451)
-
Die an die Rückruffunktion 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 bei WebExtensions wird jetzt berücksichtigt (Firefox-Bug 1304331)
Sonstiges
-
Die
multiprocessCompatible
-Eigenschaft voninstall.rdf
muss jetzt explizit auffalse
gesetzt werden, um zu verhindern, dass Multiprozess in Firefox aktiviert wird, wenn das Add-on installiert ist. -
Die spezifische Social API von Mozilla wurde substantiell verändert (größtenteils um APIs zu entfernen, die nicht mehr verwendet werden), wie folgt:
- Das
MozSocial
-Interface und die dazugehörigeNavigator.mozSocial
-Eigenschaft wurden entfernt. - Die Social Bookmarks API wurde entfernt.
- Die soziale Chat-Funktionalität wurde entfernt.
- Die Social Status API wurde entfernt.
- Alle sozialen Widgets, außer dem Share-Panel, wurden entfernt. Dies umfasst die soziale Seitenleiste, Flyover-Panels usw.
- Alle unterstützenden Benutzeroberflächenmerkmale und -funktionen für die entfernten APIs wurden ebenfalls entfernt.
- Manifest-Eigenschaften von sozialen Dienstleistern, die die entfernte Funktionalität unterstützten, werden nicht mehr unterstützt.
- Das
-
Wenn ein Add-on
mimeTypes.rdf
verwendet, um eine Zuordnung von Dateierweiterung zu MIME-Typ 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 Event-Objekt desmozbrowserlocationchange
-Ereignisses, dascanGoForward
/canGoBack
-Eigenschaften enthält, um den Zurück/Vorwärts-Status des mozBrowsers synchron abzurufen (Firefox-Bug 1279635).