Почти в каждой версии Chrome мы видим значительное количество обновлений и улучшений продукта, его производительности, а также возможностей веб-платформы. В этой статье описаны устаревания и удаления в Chrome 54, бета-версия которого доступна с 15 сентября. Этот список может быть изменен в любое время.
Отключить навигацию в обработчике выгрузки
TL;DR: Все переходы между источниками будут запрещены в обработчиках событий window.onunload
, чтобы интегрировать Chrome со спецификацией HTML, а также Firefox и Safari.
Намерение удалить | Трекер Chromestatus | Ошибка хрома
Предыдущие версии Chrome позволяли прерывать навигацию между источниками внутри window.onunload
. установив window.location.href = '#fragment'
. Согласно спецификации HTML , в обработчиках выгрузки разрешена только внутристраничная навигация, а в предыдущих версиях Chrome другие методы навигации блокировались, как того требует спецификация. Начиная с Chrome 54, такая навигация будет запрещена, чтобы привести нас в соответствие со спецификацией, а также Firefox и Safari.
HTTP/0.9 устарел
TL;DR: HTTP/0.9 устарел. Разработчикам следует перейти на более позднюю версию, предпочтительно HTTP/2.
Намерение удалить | Трекер Chromestatus | Ошибка хрома
HTTP/0.9 является предшественником HTTP/1.x . Ему не хватает многих функций своих преемников. Особое беспокойство в современной сети вызывает отсутствие заголовков ответов. Без них невозможно проверить, что ответ HTTP/0.9 действительно является ответом HTTP/0.9. Это может вызвать несколько проблем. Примеры включают, среди прочих проблем:
- Клиенты, которые рассматривают определенные ответы об ошибках как действительные ответы HTTP/0.9.
- Серверы, которым не удается закрыть сокет запроса, заставляют клиентов рассматривать ответы как зависший GET, который либо остается активным вечно, либо до тех пор, пока пользователь не перейдет со страницы, сделавшей запрос.
- Серверы, которые не могут указать браузеру, что запрос не выполнен, что может вызвать проблемы с эвристикой кэширования.
Единственный надежный способ исправить проблемы с HTTP/0.9 — полностью прекратить поддержку. Вот почему поддержка HTTP/0.9 удалена в Chrome 54.
Использование initTouchEvent
удалено.
TL;DR : initTouchEvent
устарел в пользу constructor
TouchEvent
для улучшения соответствия спецификациям и будет полностью удален в Chrome 54.
Намерение удалить | Трекер Chromestatus | Ошибка хрома
Уже давно разработчики могут создавать синтетические события касания в Chrome с помощью API initTouchEvent
. Они часто используются для имитации событий касания либо для тестирования, либо для автоматизации некоторых пользовательских интерфейсов на вашем сайте. Начиная с Chrome 49, этот устаревший API отображает следующее предупреждение.
Помимо того, что это изменение не включено в спецификацию Touch Events, есть ряд причин, по которым это изменение хорошо . Реализация initTouchEvent
в Chrome вообще не была совместима с API-интерфейсом initTouchEvent
в Safari и отличалась от Firefox на Android. И, наконец, конструктор TouchEvent
намного проще в использовании.
По этим причинам мы решили следовать спецификации, а не поддерживать API, который не является ни спецификациями, ни совместимыми с единственной другой реализацией. Разработчикам, которым нужна альтернатива, следует использовать конструктор TouchEvent
.
Поскольку реализации API initTouchEvent
для iOS и Android/Chrome сильно различались, сайты часто имели код, подобный (часто забывая о Firefox)
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);
Это плохо, потому что он ищет «Android» в User-Agent, и Chrome на Android будет соответствовать этому устаревшему значению. Однако его пока нельзя удалить, поскольку в течение некоторого времени на Android будут существовать другие браузеры на базе WebKit и более старые версии Blink, в которых вам все равно потребуется поддержка старого API.
Чтобы правильно обрабатывать TouchEvent
в Интернете, вам следует изменить свой код для поддержки Firefox, IE Edge и Chrome, проверив наличие TouchEvent
в объекте window
и имеет ли он положительную «длину» (указав, что это конструктор, который принимает аргумент) вы должны использовать это.
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);
Атрибут KeyboardEvent.keyIdentifier удален.
TL;DR: Малоподдерживаемое свойство keyboardEvent.keyIdentifier
удаляется в пользу стандартного свойства KeyboardEvent.key
.
Намерение удалить | Трекер Chromestatus | Ошибка хрома
Атрибут keyboardEvent.keyIdentifier
некоторое время был частью спецификации W3C в 2009 и 2010 годах. Однако он был реализован только в WebKit.
Разработчики, которым необходимо заменить этот атрибут, могут использовать либо стандартное свойство KeyboardEvent.key
, либо свойство KeyboardEvent.code
(как описано в статье, которую мы написали прошлой весной ). Первый имеет самую широкую базу реализации и поддерживается всеми основными настольными браузерами, кроме Safari. Последний вариант в настоящее время поддерживается в Chrome, Firefox и Opera. Удаление этой функции призвано стимулировать внедрение свойства KeyboardEvent.key
. Apple пока не сообщает, будет ли это поддерживаться; однако также устаревшие (но еще не удаленные из Chrome) свойства KeyboardEvent.keyCode
и KeyboardEvent.charCode
по-прежнему доступны в Safari.
Удалить завершенное событие и атрибут MediaStream, а также атрибут onended.
TL;DR: ended
событие и атрибут, а также обработчик событий onended
удаляются, поскольку они были удалены из спецификации Media Capture и Streams .
Намерение удалить | Трекер Chromestatus | Ошибка хрома
Ни ended
событие, ни обработчик onended
событий не были частью спецификации WebRTC вот уже около трёх лет. Разработчики, желающие отслеживать события, должны использовать MediaStreamTracks
вместо MediaStreams
.
Устаревший SVGSVGElement.viewPort
Реализация не работает в Chrome с 2012 года. Атрибут вообще отсутствует в других браузерах и удален из спецификации. По этим причинам имущество устаревает. Удаление ожидается в Chrome 55.
Намерение удалить | Трекер Chromestatus | Ошибка хрома
Устаревший SVGViewElement.viewTarget
Атрибут SVGViewElement.viewTarget
не является частью спецификации SVG2.0, и его использование невелико или вообще отсутствует. Этот атрибут устарел в Chrome 54. Ожидается его удаление в Chrome 56.
Намерение удалить | Трекер Chromestatus | Ошибка хрома
Удалить SVGZoomEvent
SVGZoomEvent
не является частью спецификации SVG2.0 и не работает в Chromium. Несмотря на это, его все еще можно обнаружить, что может привести к путанице разработчиков. Оно будет удалено.