Устаревшие и удаленные API в Chrome 57

Джо Медли
Joe Medley

Почти в каждой версии Chrome мы видим значительное количество обновлений и улучшений продукта, его производительности, а также возможностей веб-платформы. В этой статье описаны устаревания и удаления из Chrome 57, который находится в стадии бета-тестирования с начала февраля. Этот список может быть изменен в любое время.

Удалить атрибут BluetoothDevice.uuids

Атрибут BluetoothDevice.uuids удаляется, чтобы привести веб-интерфейс Bluetooth API в соответствие с текущей спецификацией. Вы можете получить все разрешенные службы GATT, вызвав метод device.getPrimaryServices() .

Ошибка хрома

Удалить элемент генерации ключей

Начиная с Chrome 49, по умолчанию <keygen> возвращает пустую строку, если для этой страницы не было предоставлено разрешение. IE/Edge не поддерживает <keygen> и не указал общедоступные сигналы для поддержки <keygen> . Firefox уже скрывает <keygen> за жестом пользователя, но публично поддерживает его удаление. Safari выпускает <keygen> и не выразил публичного мнения относительно его дальнейшей поддержки. В Chrome 57 этот элемент удален.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить API-интерфейс управления буфером синхронизации ресурсов с префиксом.

Два метода и обработчик событий: webkitClearResourceTimings() , webkitSetResourceTimingBufferSize() и onwebkitresourcetimingbufferfull являются устаревшими и зависят от поставщика. Стандартные версии этих API поддерживаются начиная с Chrome 46, и префиксные функции также устарели в этой версии. Эти функции изначально были реализованы в WebKit, но Safari их не включил. Firefox, IE 10+ и Edge имеют только версию API без префикса. Поэтому версии вебкита удаляются.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалите ServiceWorkerMessageEvent в пользу использования MessageEvent.

Спецификация HTML расширила MessageEvent , чтобы разрешить ServiceWorker в качестве типа source атрибута. client.postMessage() и создание пользовательских событий сообщений изменены на использование MessageEvent вместо ServiceWorkerMessageEvent . ServiceWorkerMessageEvent удален.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Удалить глобальные псевдонимы IndexedDB с префиксом webkit.

Точка входа IndexedDB и глобальные конструкторы были представлены с префиксами webkit где-то в Chrome 11. Версии без префиксов были добавлены в Chrome 24, а версии с префиксами устарели в Chrome 38. Затронуты следующие интерфейсы:

  • webkitIndexedDB (основная точка входа)
  • webkitIDBKeyRange (невызываемый глобальный конструктор, но имеет полезные статические методы)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (невызываемые глобальные конструкторы)

Намерение удалить | Трекер Chromestatus | Ошибка хрома

WebAudio: удалить префикс AudioContext и OfflineAudioContext.

Chrome поддерживает WebAudio с середины 2011 года, включая AudioContext . OfflineAudioContext был добавлен в следующем году. Учитывая, как долго поддерживаются стандартные интерфейсы, а также долгосрочную цель Google по удалению префиксных функций, версии этих интерфейсов с префиксами устарели с конца 2014 года и в настоящее время удаляются.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Устареть и удалить webkitCancelRequestAnimationFrame

Метод webkitCancelRequestAnimationFrame() — это устаревший API, зависящий от поставщика, а стандартный метод cancelAnimationFrame() уже давно поддерживается в Chromium. Поэтому версия вебкита удаляется.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Устарело сопоставление без учета регистра для атрибута usemap.

Атрибут usemap ранее определялся как безрегистровый. К сожалению, реализация этого была настолько сложной, что ни один браузер не реализовал ее правильно. Исследования показали, что такой сложный алгоритм не нужен, и даже сопоставление ASCII без учета регистра не является необходимым.

Следовательно, спецификация была обновлена, и теперь применяется сопоставление с учетом регистра. Старое поведение устарело в Chrome 57, и ожидается, что оно будет удалено в Chrome 58.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Устаревший FileReaderSync в сервис-воркерах

В спецификации Service Worker всегда было (ненормативное) примечание, что «любые типы синхронных запросов не должны инициироваться внутри Service Worker», чтобы избежать блокировки Service Worker. Блокировка сервис-воркера заблокирует все сетевые запросы от контролируемых страниц. К сожалению, API FileReaderSync уже давно доступен в сервис-воркерах.

В настоящее время только Firefox и Chrome предоставляют FileReaderSync в сервис-воркерах. В обсуждении спецификации Firefox согласился с тем, что это следует исправить. Удаление ожидается в Chrome 59.

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Устаревший вызывающий объект для HTMLEmbedElement и HTMLObjectElement.

Наличие у интерфейса устаревшего вызывающего объекта означает, что экземпляр можно вызывать как функцию. В настоящее время HTMLEmbedElement и HTMLObjectElement поддерживают эту функцию. В Chrome 57 эта возможность устарела. После удаления, которое ожидается в Chrome 58, вызов вызовет исключение.

Это изменение приводит Chrome в соответствие с недавними изменениями спецификаций. Устаревшее поведение не поддерживается в Edge или Safari и удаляется из Firefox .

Намерение удалить | Трекер Chromestatus | Ошибка хрома

Устаревший RTCRtcpMuxPolicy для «переговоров»

rtcpMuxPolicy используется Chrome для указания предпочтительной политики использования мультиплексирования RTP/RTCP. В Chrome 57 мы изменили стандартную политику rtcpMuxPolicy на «require» и объявили устаревшей «согласование» по следующим причинам:

  • Немультиплексированный RTCP использует дополнительные сетевые ресурсы.
  • Удаление «согласования» упростит интерфейс API, поскольку «RtpSender»/«RtpReceiver» тогда будет иметь только один транспорт.

В Chrome 57 «переговоры» устарели. Мы считаем, что это некритическое изменение, поскольку пользователь получит сообщение об устаревании, а RTCPeerConnection все равно можно будет создать. Удаление происходит в Chrome 63.

Намерение прекратить поддержку | Ошибка хрома

Устарела поддержка встроенных учетных данных в запросах подресурсов.

Жесткое кодирование учетных данных в запросах субресурсов является проблематичным с точки зрения безопасности, поскольку в прошлом это позволяло хакерам перебирать учетные данные. Эти опасности усугубляются при запросах авторизованных подресурсов, которые достигают внутренних диапазонов IP-адресов (ваших маршрутизаторов и т. д.). Учитывая низкий уровень использования, закрытие этой (небольшой) дыры в безопасности кажется вполне разумным.

Разработчики могут встраивать ресурсы, которые не требуют базовой/дайджест-аутентификации, вместо этого полагаясь на файлы cookie и другие механизмы управления сеансами.

Намерение удалить | Трекер Chromestatus | Ошибка хрома