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 diesem Artikel werden die Einstellungen in Chrome 54 beschrieben, die sich am 15. September in der Betaphase befinden. Diese Liste kann sich jederzeit ändern.
Navigationen im Unload-Handler deaktivieren
Kurzfassung: Alle ursprungsübergreifenden Navigationen sind in window.onunload
-Event-Handlern nicht zulässig, um Chrome an die HTML-Spezifikationen sowie Firefox und Safari anzupassen.
Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler
In früheren Chrome-Versionen konnte die ursprungsübergreifende Navigation in window.onunload
unterbrochen werden. indem Sie window.location.href = '#fragment'
festlegen. Laut HTML-Spezifikation sind in den Unload-Handlern nur In-Page-Navigationen zulässig. In früheren Versionen von Chrome wurden andere Navigationsmethoden gemäß der Spezifikation blockiert. Ab Chrome 54 ist es nicht mehr möglich, durch solche Navigationen den Spezifikationen sowie Firefox und Safari gerecht zu werden.
HTTP/0.9 eingestellt
TL;DR:HTTP/0.9 wurde eingestellt. Entwickler sollten auf eine neuere Version umstellen, vorzugsweise HTTP/2.
Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler
HTTP/0.9 ist der Vorgänger von HTTP/1.x. Es fehlen viele Funktionen seiner Nachfolger. Ein besonderes Problem beim modernen Web ist, dass es keine Antwortheader gibt. Ohne sie kann nicht überprüft werden, ob eine HTTP/0.9-Antwort tatsächlich eine HTTP/0.9-Antwort ist. Dies kann zu mehreren Problemen führen. Beispiele:
- Clients, die bestimmte Fehlerantworten als gültige HTTP/0.9-Antworten behandeln.
- Server, die den Anfrage-Socket nicht schließen, führen dazu, dass Clients die Antworten als hängende GET-Anfragen behandeln, die entweder für immer aktiv bleiben oder bis ein Nutzer eine Seite verlässt, von der die Anfrage gesendet wurde.
- Server, die dem Browser nicht mitteilen können, dass eine Anfrage fehlgeschlagen ist, was zu Problemen mit Caching-Heuristiken führen kann.
Die einzige sichere Möglichkeit, Probleme mit HTTP/0.9 zu beheben, besteht darin, den Support vollständig zu entfernen. Aus diesem Grund wird HTTP/0.9 in Chrome 54 nicht mehr unterstützt.
Die Verwendung von initTouchEvent
wurde entfernt
Zusammenfassung: initTouchEvent
wurde zugunsten von TouchEvent
constructor
eingestellt, um die Compliance der Spezifikationen zu verbessern. In Chrome 54 wird es vollständig entfernt.
Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler
Schon seit Langem können Entwickler mithilfe der initTouchEvent
API synthetische Touch-Ereignisse in Chrome erstellen. Sie werden häufig verwendet, um Touch-Ereignisse zu simulieren, um einige UIs auf deiner Website zu testen oder zu automatisieren. Seit Chrome 49 wird bei diesem veralteten API die folgende Warnung angezeigt .
Neben der fehlenden Spezifikation für Touch-Ereignisse gibt es eine Reihe von Gründen, warum diese Änderung gut ist.
Die Chrome-Implementierung von initTouchEvent
war überhaupt nicht mit der initTouchEvent
API von Safari kompatibel und unterschied sich von Firefox unter Android. Außerdem ist der TouchEvent
-Konstruktor viel einfacher zu verwenden.
Aus diesen Gründen haben wir uns entschieden, uns an die Spezifikation zu halten, anstatt eine API beizubehalten, die weder spezifiziert noch mit der einzigen anderen Implementierung kompatibel ist.
Entwickler, die eine Alternative benötigen, sollten den TouchEvent
-Konstruktor verwenden.
Da sich die Implementierungen der initTouchEvent
API sehr stark von iOS und Android/Chrome unterscheiden, enthielten Websites oft einen Code in diesem Stil (Firefox wurde häufig vergessen)
var event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches, changedTouches, 0, 0);
}
document.body.dispatchEvent(touchEvent);
Das ist schlecht, da im User-Agent nach „Android“ gesucht wird und Chrome unter Android übereinstimmt und diese Einstellung erreicht wird. Es kann jedoch noch nicht entfernt werden, da es unter Android noch eine Zeit lang andere WebKit- und ältere Blink-basierte Browser gibt, in denen die ältere API unterstützt werden muss.
Damit TouchEvent
s im Web richtig verarbeitet werden können, müssen Sie Ihren Code so ändern, dass er Firefox, IE Edge und Chrome unterstützt. Prüfen Sie dazu, ob TouchEvent
im window
-Objekt vorhanden ist und ob es eine positive „Länge“ hat, was bedeutet, dass es sich um einen Konstruktor handelt, der ein Argument verwendet.
if('TouchEvent' in window && TouchEvent.length > 0) {
var touch = new Touch({
identifier: 42,
target: document.body,
clientX: 200,
clientY: 200,
screenX: 300,
screenY: 300,
pageX: 200,
pageY: 200,
radiusX: 5,
radiusY: 5
});
event = new TouchEvent("touchstart", {
cancelable: true,
bubbles: true,
touches: [touch],
targetTouches: [touch],
changedTouches: [touch]
});
}
else {
event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches,
changedTouches, 0, 0);
}
}
document.body.dispatchEvent(touchEvent);
Attribut „KeyboardEvent.keyIdentifier“ wurde entfernt
Kurzfassung: Die wenig unterstützte keyboardEvent.keyIdentifier
-Property wird zugunsten der standardbasierten KeyboardEvent.key
-Property entfernt.
Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler
Das Attribut keyboardEvent.keyIdentifier
war 2009 und 2010 kurz Teil einer W3C-Spezifikation. Sie wurde jedoch nur in WebKit implementiert.
Entwickler, die dieses Attribut ersetzen müssen, können entweder die standardbasierte KeyboardEvent.key
-Property oder die KeyboardEvent.code
-Property verwenden. Weitere Informationen dazu finden Sie in einem Artikel vom letzten Frühjahr. Erstere hat die breiteste Implementierungsbasis und wird von allen gängigen Desktop-Browsern außer Safari unterstützt. Die neuere Version wird derzeit von Chrome, Firefox und Opera unterstützt. Wenn Sie diese Funktion entfernen, soll die Akzeptanz der Property „KeyboardEvent.key
“ gesteigert werden. Apple steht noch nicht fest, ob diese Funktion unterstützt wird. Die ebenfalls eingestellten, aber noch nicht aus Chrome entfernten Eigenschaften KeyboardEvent.keyCode
und KeyboardEvent.charCode
sind in Safari weiterhin verfügbar.
Beendetes MediaStream-Ereignis und Attribut sowie Attribut „onended“ entfernen
Kurzfassung: Das ended
-Ereignis und -Attribut sowie der onended
-Event-Handler werden entfernt, da sie aus den Media Capture- und Streams-Spezifikationen entfernt wurden.
Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler
Weder das ended
-Ereignis noch der onended
-Event-Handler sind seit etwa drei Jahren Teil der WebRTC-Spezifikation. Entwickler, die sich Veranstaltungen ansehen möchten, sollten MediaStreamTracks
statt MediaStreams
verwenden.
SVGSVGElement.viewPort verwerfen
Seit 2012 funktioniert die Implementierung in Chrome nicht mehr. Das Attribut ist in anderen Browsern überhaupt nicht vorhanden und wurde aus der Spezifikation entfernt. Aus diesen Gründen wird die Property eingestellt. Diese Funktion wird voraussichtlich in Chrome 55 entfernt.
Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler
„SVGViewElement.viewTarget“ verwerfen
Das Attribut SVGViewElement.viewTarget
ist nicht Teil der SVG2.0-Spezifikation und wird nur geringfügig oder nicht verwendet. Dieses Attribut wurde in Chrome 54 eingestellt. Diese Funktion wird voraussichtlich in Chrome 56 entfernt.
Entfernungsabsicht | Chromestatus-Tracker | Chromium-Fehler
SVGZoomEvent entfernen
SVGZoomEvent
ist nicht Teil der SVG2.0-Spezifikation und funktioniert in Chromium nicht. Trotz der Tatsache, dass die Funktion immer noch funktionsfähig ist, kann dies bei Entwicklern zu Verwirrung führen. Sie wird entfernt.