In fast jeder Version von Chrome gibt es eine beträchtliche Anzahl von Updates und Verbesserungen des Produkts, seiner Leistung und auch der Funktionen der Webplattform.
In Chrome 50 (geschätzter Betatermin: 10. bis 17. März) gibt es einige Änderungen. Diese Liste kann sich jederzeit ändern.
AppCache in unsicheren Kontexten eingestellt
Kurzfassung: Um Cross-Site-Scripting zu verhindern, stellen wir AppCache für unsichere Ursprünge ein. Wir gehen davon aus, dass sie in Chrome 52 nur für Ursprünge funktioniert, die Inhalte über HTTPS bereitstellen.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
AppCache ist eine Funktion, die den Offline- und dauerhaften Zugriff auf eine Quelle ermöglicht. Dies ist eine leistungsstarke Rechteausweitung für einen Cross-Site-Scripting-Angriff. Im Rahmen einer größeren Initiative zur Entfernung leistungsstarker Funktionen bei unsicheren Ursprüngen.
Chrome entfernt diesen Angriffsvektor, indem er nur über HTTPS zulässig ist. Die Unterstützung für HTTP wird in Chrome 50 eingestellt und voraussichtlich in Chrome 52 vollständig entfernt.
„Document.defaultCharset“ wurde entfernt
Kurzfassung: document.defaultCharset
wurde entfernt, um die Spezifikationskonformität zu verbessern.
Entfernungsvorschlag | Chromestatus Tracker | CRBug-Problem
Die in Chrome 49 eingestellte document.defaultCharset
ist eine schreibgeschützte Eigenschaft, die die Standardzeichencodierung des Systems des Nutzers basierend auf seinen regionalen Einstellungen zurückgibt. Es hat sich als nicht sinnvoll erwiesen, diesen Wert beizubehalten, da Browser die Informationen zur Zeichencodierung in der HTTP-Antwort oder im Meta-Tag auf der Seite verwenden.
Verwenden Sie stattdessen document.characterSet
, um den ersten im HTTP-Header angegebenen Wert abzurufen. Wenn das nicht vorhanden ist, wird der im Attribut charset
des Elements <meta>
angegebene Wert verwendet (z. B. <meta
charset="utf-8">
). Wenn keiner dieser Werte verfügbar ist, wird die Systemeinstellung des Nutzers für document.characterSet
verwendet.
Unterressourcenattribut aus Linkelement entfernt
Kurzfassung: Die Unterstützung für den Wert subresource
für das Attribut rel
von HTMLLinkElement
wird entfernt.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
Das Attribut subresource
im <link>-Element sollte eine Ressource während der Leerlaufzeit des Browsers vorabrufen. Nachdem ein Browser eine Seite heruntergeladen hat, konnte er Ressourcen wie andere Seiten vorab herunterladen, sodass sie bei einer Anfrage durch Nutzer einfach aus dem Browsercache abgerufen werden konnten.
Das Attribut subresource
hatte eine Reihe von Problemen. Erstens hat es nie wie vorgesehen funktioniert. Referenzierte Ressourcen wurden mit niedriger Priorität heruntergeladen. Das Attribut wurde in keinem anderen Browser als Chrome implementiert. Die Chrome-Implementierung enthielt einen Fehler, der dazu führte, dass Ressourcen zweimal heruntergeladen wurden.
Entwickler, die die Nutzerfreundlichkeit durch das Vorladen von Inhalten verbessern möchten, haben mehrere Möglichkeiten. Die am besten anpassbare Option ist, einen Service Worker zu erstellen, um Precaching und die Caches API zu nutzen. Weitere Lösungen sind andere Werte für das Attribut rel
, darunter preconnect
, prefetch
, preload
und prerender
. Einige dieser Optionen sind experimentell und werden möglicherweise nicht allgemein unterstützt.
Entfernen des Fallbacks auf unsichere TLS-Versionen
Kurzfassung: Ein Mechanismus zum Erzwingen der Rückgabe von Daten durch Server mit weniger oder nicht sicheren Versionen von TLS wird entfernt.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
Transport Layer Security (TLS) unterstützt einen Mechanismus zum Aushandeln von Versionen, sodass neue TLS-Versionen eingeführt werden können, ohne die Kompatibilität zu beeinträchtigen. Einige Server haben dies so implementiert, dass Browser unsichere Endpunkte als Fallback verwenden mussten. Aus diesem Grund konnten Angreifer jede Website, nicht nur falsch konfigurierte, dazu zwingen, schwächere Versionen von TLS auszuhandeln.
Auf betroffenen Websites kann keine Verbindung zu ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
hergestellt werden. Administratoren sollten dafür sorgen, dass ihre Serversoftware auf dem neuesten Stand ist. Wenn das Problem weiterhin besteht, wenden Sie sich an den Anbieter der Serversoftware, um zu prüfen, ob eine Lösung verfügbar ist.
KeyboardEvent.prototype.keyLocation entfernen
Kurzfassung: Entfernen Sie einen unnötigen Alias für das Attribut Keyboard.prototype.location
.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
Dieses Attribut ist lediglich ein Alias für das Attribut Keyboard.prototype.location
, mit dem zwischen Tasten unterschieden werden kann, die sich an mehreren Stellen auf einer Tastatur befinden. Mit beiden Attributen können Entwickler beispielsweise zwischen den beiden Enter
-Tasten auf einer erweiterten Tastatur unterscheiden.
Fehler- und Erfolgshandler in RTCPeerConnection-Methoden erforderlich
Kurz gesagt: Für die WebRTC-RTCPeerConnection-Methoden createOffer()
und createAnswer()
sind jetzt sowohl ein Fehler- als auch ein Erfolgs-Handler erforderlich. Bisher war es möglich, diese Methoden nur mit einem Success-Handler aufzurufen. Diese Verwendung ist veraltet.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
In Chrome 49 haben wir eine Warnung hinzugefügt, die angezeigt wird, wenn Sie setLocalDescription()
oder setRemoteDescription()
ohne Angabe eines Fehler-Handlers aufrufen. Das Argument „error handler“ ist ab Chrome 50 obligatorisch.
Dies ist Teil der Vorbereitung für die Einführung von Promises für diese Methoden, wie in der WebRTC-Spezifikation gefordert.
Hier ein Beispiel aus der WebRTC RTCPeerConnection-Demo (main.js, Zeile 126):
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
Sowohl setLocalDescription()
als auch setRemoteDescription()
haben einen Fehler-Handler. Ältere Browser, die nur einen Erfolgs-Handler erwarten, ignorieren das Fehler-Handler-Argument einfach, falls es vorhanden ist. Wenn dieser Code in einem älteren Browser aufgerufen wird, wird keine Ausnahme ausgelöst.
Im Allgemeinen empfehlen wir für WebRTC-Produktionsanwendungen die Verwendung von adapter.js
, einem Shim, der vom WebRTC-Projekt verwaltet wird, um Apps vor Spezifikationsänderungen und Präfixunterschieden zu schützen.
XMLHttpRequestProgressEvent wird nicht mehr unterstützt
Kurzfassung: Die XMLHttpRequestProgressEvent
-Benutzeroberfläche wird zusammen mit den Attributen position
und totalSize
entfernt.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
Dieses Ereignis wurde zur Unterstützung der Gecko-Kompatibilitätseigenschaften position
und totalSize
eingeführt. Die Unterstützung für alle drei wurde in Mozilla 22 eingestellt und die Funktionalität wurde längst durch die ProgressEvent
ersetzt.
var progressBar = document.getElementById("p"),
client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
if(pe.lengthComputable) {
progressBar.max = pe.total
progressBar.value = pe.loaded
}
}
Entfernen von Encrypted Media Extensions mit Präfix
Kurzfassung: Verschlüsselte Media-Erweiterungen mit Präfix wurden zugunsten eines spezifikationsbasierten Ersatzes ohne Präfix entfernt.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
In Chrome 42 haben wir eine spezifikationsbasierte, nicht präfixierte Version von Encrypted Media Extensions ausgeliefert. Diese API wird verwendet, um Digital Rights Management-Systeme für die Verwendung mit HTMLMediaElement
zu erkennen, auszuwählen und mit ihnen zu interagieren.
Das war vor fast einem Jahr. Da die Version ohne Präfix mehr Funktionen bietet als die Version mit Präfix, ist es an der Zeit, die Version der API mit Präfix zu entfernen.
Unterstützung für SVGElement.offset-Attribute entfernen
Kurzfassung: Die Offset-Attribute für SVGElement wurden zugunsten der weiter verbreiteten Attribute für HTMLElement
entfernt.
Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler
Offset-Eigenschaften werden seit Langem sowohl von HTMLElement
als auch von SVGElement
unterstützt. Gecko und Edge unterstützen sie jedoch nur für HTMLElement
. Um die Konsistenz zwischen Browsern zu verbessern, wurden diese Eigenschaften in Chrome 48 eingestellt und werden nun entfernt.
Obwohl entsprechende Properties Teil von HTMLElement
sind, können Entwickler, die nach einer Alternative suchen, auch getBoundingClientRect()
verwenden.