Firefox 51 Versionshinweise 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 Firefox- und Gecko-Entwickler sowie Add-On-Entwickler.
Änderungen für Webentwickler
>HTML
<hr>-Elemente können nun als Trennlinien in<menu>-Elementen verwendet werden (Firefox-Fehler 870388).- Die
selectionStart- undselectionEnd-Attribute der<input>- und<textarea>-Elemente geben nun korrekt die aktuelle Position des Texteingabecursors zurück, wenn keine Auswahl vorhanden ist, anstatt 0 zurückzugeben (Firefox-Fehler 1287655).
CSS
:indeterminatefür <input type="radio"> wurde implementiert (Firefox-Fehler 885359).:placeholder-shownfür<input type="text">wurde implementiert (Firefox-Fehler 1069015).- Das
::placeholderPseudo-Element ist jetzt ohne Präfix (Firefox-Fehler 1069012). - Die
:validCSS-Pseudoklasse, die nicht mit gültigen<form>-Elementen übereinstimmte, wurde korrigiert (Firefox-Fehler 1285425). - Der
plaintext-Wert vonunicode-bidifunktioniert jetzt auch mit vertikalen Schreibrichtungen (Firefox-Fehler 1302734). - Die
fill-box- undstroke-box-Werte vonclip-pathwerden jetzt ordnungsgemäß unterstützt; sie waren zuvor Aliase vonborder-box(Firefox-Fehler 1289011). - Die Höhe der Flex-Linie wird beschränkt (gespannte Flex-Items beschränkend) in einem einzeiligen Flex-Container mit automatischer Höhe und max-height (Spezifikationsänderung) (Firefox-Fehler 1000957).
JavaScript
- Die ES2015
Symbol.toStringTag-Eigenschaft wurde implementiert (Firefox-Fehler 1114580). - Die ES2015-Methoden
TypedArray.prototype.toString()undTypedArray.prototype.toLocaleString()wurden implementiert (Firefox-Fehler 1121938). - Die Methode
DateTimeFormat.prototype.formatToParts()ist jetzt verfügbar (Firefox-Fehler 1289340). constundletsind jetzt vollständig ES2015-konform (Firefox-Fehler 950547).- Die Verwendung von
constinfor...of-Schleifen hat jetzt bei jeder Iteration eine neue Bindung und löst keinenSyntaxErrormehr aus (Firefox-Fehler 1101653). - Die veraltete
for each...in-Schleife zeigt jetzt eine Warnung in der Konsole an (Firefox-Fehler 1293205). Bitte migrieren Sie Ihren Code zur standardisiertenfor...of-Schleife. - Generator-Funktionen können kein Label mehr haben und
letals Label-Name ist jetzt unzulässig (Firefox-Fehler 1288459). - Veraltete Legacy-Generator-Funktionen werfen jetzt einen Fehler, wenn sie in Methodendefinitionen verwendet werden (Firefox-Fehler 1199296).
- Die
next()-Methode des Iterator-Protokolls wird jetzt einenTypeErrorauslösen, wenn der zurückgegebene Wert kein Objekt ist (Firefox-Fehler 1016936). - Kinderindizierte Pseudoklassen-Selektoren sollten ohne Elternteil übereinstimmen (Firefox-Fehler 1300374).
Entwicklertools
WebGL
-
WebGL 2 ist jetzt standardmäßig aktiviert. Siehe webglsamples.org/WebGL2Samples für einige Demos.
- WebGL 2 stellt das
WebGL2RenderingContext-Interface zur Verfügung, das OpenGL ES 3.0 auf das<canvas>-Element bringt. - Neue Funktionen beinhalten:
- 3D-Texturen,
- Sampler-Objekte,
- Uniform Buffer-Objekte,
- Sync-Objekte,
- Query-Objekte,
- Transform Feedback-Objekte,
- Vorgeschlagene Erweiterungen, die jetzt ein Kernstück von WebGL 2 sind: Vertex Array-Objekte, Instancing, Mehrere Render-Ziele, Fragment-Tiefe.
- WebGL 2 stellt das
-
Die
WEBGL_compressed_texture_es3-Erweiterung (implementiert in Firefox 46) wurde inWEBGL_compressed_texture_etcumbenannt (Firefox-Fehler 1316778) und ist in WebGL 2-Kontexten standardmäßig nicht mehr enthalten (Firefox-Fehler 1306174). -
Die
EXT_disjoint_timer_query-Erweiterung wurde aktualisiert, umWebGLQuery-Objekte anstelle vonWebGLTimerQuery-Objekten zu verwenden (Firefox-Fehler 1308057). -
Die
OES_vertex_array_object-Erweiterung verwendet jetzt das WebGL 2WebGLVertexArrayObject-Objekt anstelle ihres eigenenWebGLVertexArrayObjectOES-Objekts (Firefox-Fehler 1318523). -
Sie können jetzt
ImageBitmap-Objekte als Quellen für Texturbilder in Methoden wieWebGLRenderingContext.texImage2D(),WebGLRenderingContext.texSubImage2D(),WebGL2RenderingContext.texImage3D()oderWebGL2RenderingContext.texSubImage3D()verwenden (Firefox-Fehler 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-Fehler 1271506). - Unterstützung für die
IDBCursor.continuePrimaryKey()-Methode wurde hinzugefügt (Firefox-Fehler 1271505). - Binärschlüssel werden jetzt unterstützt (Firefox-Fehler 1271500).
- Siehe auch "What's new in IndexedDB 2.0?" – Mozilla hacks
- Unterstützung für die neue
Canvas
- Die nicht standardisierte
CanvasRenderingContext2D.mozFillRule()-Methode wurde entfernt; die Füllregel kann mithilfe eines Parameters der standardmäßigenCanvasRenderingContext2D.fill()-Methode definiert werden (Firefox-Fehler 826619). - Die
CanvasRenderingContext2D.imageSmoothingEnabled-Eigenschaft ist jetzt unverändert (Firefox-Fehler 768072).
SVG
- Das
tabindex-Attribut wurde hinzugefügt (Firefox-Fehler 778654). - Das
href-Attribut wurde hinzugefügt, wodurchxlink:hrefobsolet wird (Firefox-Fehler 1245751). - Sie können jetzt benutzerdefinierte Datenattribute auf SVG-Elementen durch Verwendung der
HTMLElement.dataset-Eigenschaft und derdata-*-Reihe von SVG-Attributen verwenden (Firefox-Fehler 921834). - CSS-Animationen, die in einem SVG-Bild verwendet werden, das in einem
<img>-Element dargestellt wird, funktionieren jetzt wieder; dies war eine alte Regression (Firefox-Fehler 1190881).
Web Workers
- Der nicht standardisierte und veraltete
onclose-Ereignishandler und die Verwendung desclose-Ereignisses inWorkerwurden aus Firefox entfernt.
Netzwerk
- Skripte, die mit einem
image/*,video/*,audio/*odertext/csvMIME-Typ bereitgestellt werden, werden jetzt blockiert und nicht geladen oder ausgeführt. Dies erfolgt, wenn sie mit<script>deklariert oder überWorkerGlobalScope.importScripts(),Worker(),SharedWorker()geladen werden (Firefox-Fehler 1229267 und Firefox-Fehler 1288361). - Unterstützung für SHA-1-Zertifikate von öffentlich vertrauenswürdigen Zertifizierungsstellen wurde entfernt (Firefox-Fehler 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-Fehler 1309707), siehe Distrusting New WoSign and StartCom Certificates für weitere Informationen.
- Die PAC Funktion
FindProxyForURL(url, host)entfernt jetzt Pfade und Abfragen von https:// URLs, um Informationslecks zu vermeiden (siehe Firefox-Fehler 1255474 und CVE-2017-5384).
XHR
- Die
XMLHttpRequest.responseXML-Eigenschaft gibt nicht mehr ein Teil-[Document](/de/docs/Web/API/Document) mit einem <parsererror>-Knoten oben zurück, wenn ein Parse-Fehler bei dem Versuch auftritt, die empfangenen Daten zu interpretieren. Stattdessen gibt sie korrektnullzurück (Firefox-Fehler 289714). - Um die neueste Spezifikation zu erfüllen, wird eine
XMLHttpRequestohne ein mitsetRequestHeader()gesetztesAccept-Header jetzt mit einem solchen Header gesendet, dessen Wert auf*/*gesetzt ist (Firefox-Fehler 918752). - Fixed
XMLHttpRequest.open(), sodass dieusername- undpassword-Parameter, wenn sie weggelassen werden, jetzt standardmäßig aufnullgesetzt werden, gemäß der Spezifikation (Firefox-Fehler 933759).
WebRTC
- Die Methode
RTCPeerConnection.removeStream()wurde entfernt. Sie wurde bereits in Firefox 22 veraltet und hat seit langem eineNotSupportedError-DOMExceptionausgelöst. Sie müssen stattdessen für jeden Track im StreamRTCPeerConnection.removeTrack()verwenden. - WebRTC unterstützt jetzt standardmäßig den VP9-Codec. Als er in Firefox 46 hinzugefügt wurde, war VP9 standardmäßig deaktiviert, aber wenn er aktiviert war, war er der bevorzugte Codec; jedoch wurde er aufgrund seines aktuellen CPU-Nutzungsgrades als zweite Wahl (nach VP8) verschoben.
- Die Methode
HTMLMediaElement.captureStream(), die einenMediaStreamenthält, der den Inhalt des angegebenen<video>oder<audio>zurückgibt. Es ist bemerkenswert, dass dies immer noch alsmozCaptureStream()präfixiert ist und noch nicht genau der Spezifikation entspricht.
Audio/Video
- Unterstützung für FLAC wurde hinzugefügt (FLAC-Codec) sowohl in FLAC- als auch in Ogg-Containern (Firefox-Fehler 1195723). Unterstützte FLAC-MIME-Typen sind:
audio/flacundaudio/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 (sowohl mit als auch ohne MSE) wurde hinzugefügt (Firefox-Fehler 1303888).
- Das Throttling von Timern, die von
Window.setInterval(),WorkerGlobalScope.setInterval(),setTimeout()undsetTimeout()erstellt wurden, in Hintergrund-Tabs wurde in Firefox 50 so geändert, dass es nicht mehr auftritt, wenn ein Web Audio APIAudioContextaktiv Ton spielt. Dies löste jedoch nicht alle Szenarien, in denen Timing-sensible Audiowiedergabe (wie Musikplayer, die einzelne Noten mit Timern erzeugen) nicht richtig funktionieren konnte. Aus diesem Grund werden Hintergrund-Tabs in Firefox 51, die einAudioContexthaben, nicht mehr gedrosselt, auch wenn es gerade keinen Ton spielt.
DOM
- Die
DOMImplementation.hasFeature()gibt jetzt immertruezurück (Firefox-Fehler 984778). - Die
HTMLInputElement- undHTMLTextAreaElement-EigenschaftenselectionStartundselectionEndgeben nun korrekt die aktuelle Position des Texteingabecursors zurück, wenn keine Auswahl vorhanden ist, anstatt 0 zurückzugeben (Firefox-Fehler 1287655). - Das
HTMLImageElement-Interface 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 den Effekt einer Web-
Animationändern, indem Sie den Wert ihrereffect-Eigenschaft festlegen. Bisher war diese Eigenschaft schreibgeschützt (Firefox-Fehler 1049975). - Die Methode
Permissions.revoke()der Berechtigungs-API wurde hinter einer Präferenz (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 der Storage API und die MethodeStorageManager.estimate()wurden zusammen mit dem erforderlichen unterstützenden Code implementiert. Speicherpersistenzfunktionen sind noch nicht implementiert. Siehe Firefox-Fehler 1267941. - Aus Datenschutzgründen werden sowohl
BatteryManager.chargingTimeals auchBatteryManager.dischargingTimejetzt auf die nächste Viertelstunde gerundet (Firefox-Fehler 1292655).
Ereignisse
- Firefox unterstützt jetzt die
onanimationstart,onanimationiterationundonanimationendEreignishandler, zusätzlich zur Unterstützung der entsprechenden Ereignisse mitaddEventListener()(Firefox-Fehler 911987). - Firefox unterstützt jetzt den
ontransitionendEreignishandler (Firefox-Fehler 911987).
Sicherheit
- Wenn Anmeldeseiten (d.h. solche, die ein
<input type="password">-Feld enthalten) so erstellt werden, dass sie unsicher übermittelt werden würden, zeigt Firefox ein durchgestrichenes Schloss-Symbol in der Adressleiste an, um Benutzer zu warnen (Firefox-Fehler 1319119). Siehe Unsichere Passwörter für weitere Details.
Entfernungen
- Die nicht standardisierte Simple Push API, die hauptsächlich für die Verwendung mit Firefox OS gedacht war und jetzt von der W3C Push API überholt wurde, wurde vollständig aus Gecko entfernt (Firefox-Fehler 1296579).
- Die nicht standardisierte Wecker-API, die hauptsächlich für die Verwendung mit Firefox OS gedacht war, wurde vollständig aus Gecko entfernt (Firefox-Fehler 1300884).
- Unterstützung für Präfixe in der Page Visibility API wurde entfernt (Firefox-Fehler 812701).
Änderungen für Add-On- und Mozilla-Entwickler
>WebExtensions
-
Neue APIs:
idle.queryState()(Firefox-Fehler 1299846)idle.onStateChanged(Firefox-Fehler 1299775)management.getSelf()(Firefox-Fehler 1283116)management.uninstallSelf()(Firefox-Fehler 1220136)runtime.getBrowserInfo()(Firefox-Fehler 1268399)runtime.reload()undruntime.onUpdateAvailable()(Firefox-Fehler 1279012)
-
Sie können jetzt eine WebExtension in einem Legacy-Add-On-Typ einbetten (Firefox-Fehler 1252215).
-
Zwischenablagezugriff wird jetzt unterstützt (Firefox-Fehler 1197451)
-
Die an den Callback von
tabs.executeScript()übergebenen Argumente wurden korrigiert (Firefox-Fehler 1290157) -
localStorage wird jetzt geleert, wenn eine WebExtension deinstalliert wird (Firefox-Fehler 1213990)
-
Ein geänderter
Content-Type-Header in Web Extensions wird jetzt berücksichtigt (Firefox-Fehler 1304331)
Sonstiges
-
Die
multiprocessCompatible-Eigenschaft voninstall.rdfmuss jetzt explizit auffalsegesetzt werden, um zu verhindern, dass Multiprocess in Firefox aktiviert wird, wenn das Add-On installiert wird. -
Die Mozilla-spezifische Social API wurde grundlegend geändert (hauptsächlich um nicht mehr verwendete APIs zu entfernen), 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, außer dem Share-Panel, wurden entfernt. Dazu gehören die soziale Seitenleiste, Flyover-Panels usw.
- Alle unterstützenden Benutzeroberflächenmerkmale und Funktionen für die entfernten APIs wurden ebenfalls entfernt.
- Soziale Service-Provider Manifest-Eigenschaften, die die entfernten Funktionalitäten unterstützen, werden nicht mehr unterstützt.
- Das
-
Wenn ein Add-On
mimeTypes.rdfverwendet, um eine Dateierweiterung zu MIME-Typ-Zuordnung bereitzustellen, muss es jetzt einen Eintrag in der Kategorie"ext-to-type-mapping"registrieren (Firefox-Fehler 306471). -
Die Browser API enthält jetzt ein
detail-Objekt auf dem Ereignisobjekt desmozbrowserlocationchange-Ereignisses, dascanGoForward/canGoBack-Eigenschaften enthält und das Abrufen des Vorwärts-/Rückwärts-Status des mozBrowsers synchron ermöglicht (Firefox-Fehler 1279635).