Выпуск jQuery 4.0 содержит изменения, нарушающие обратную совместимость, но по заверению разработчиков большинство пользователей смогут безболезненно перейти на новую версию с минимальными изменениями в своём коде. Для упрощения миграции можно использовать специальный плагин. Нарушения обратной совместимости связаны с удалением устаревшего кода, удалением некоторых внутренних недокументированных параметров, прекращением поддержки некоторого излишне усложнённого поведения и прекращением поддержки API, ранее объявленных устаревшими. Удаление устаревших API и браузеров позволило сократить размер gzip-архива с библиотекой на 3 КБ (slim-версия теперь занимает 19.5 КБ, а полная — 27.5 КБ).
Среди изменений:
- Прекращена поддержка браузера IE 10 и более старых версий (поддержка IE 11 сохранена, но будет удалена в Query 5.0), а также других старых браузеров таких как Edge Legacy, Android Browser и Firefox до ветки 115.
- Встроена поддержка API Trusted Types, развиваемого для защиты от манипуляций с DOM, приводящих к межсайтовому скриптингу (DOM XSS), например, при некорректной обработке полученных от пользователя данных в блоках eval() или вставках «.innerHTML», что может привести к выполнению JavaScript-кода в контексте определённой страницы. В методы
jQuery теперь может передаваться HTML-код в форме объектов TrustedHTML. - Код jQuery переведён на использование JavaScript-модулей ESM (ECMAScript Module) и может поставляться и импортироваться как модуль.
- Удалены функции, ранее помеченные устаревшими: jQuery.isArray, jQuery.parseJSON, jQuery.trim, jQuery.type, jQuery.now, jQuery.isNumeric, jQuery.isFunction, jQuery.isWindow, jQuery.camelCase, jQuery.nodeName, jQuery.cssNumber, jQuery.cssProps и jQuery.fx.interval. Вместо данных функций рекомендуется использовать штатные JavaScript-функции Array.isArray(), JSON.parse(), String.prototype.trim() и Date.now()
- Удалены недокументированные внутренние методы объекта Array — push, sort и splice.
- Порядок обработки событий смены фокуса приведён к соответствию спецификации W3C — blur, focusout, focus и focusin.
- Размер урезанного варианта (slim), не содержащий модули ajax и effects, сокращён до 19.5k за счёт прекращения поставки объектов Deferred (рекомендуется использовать штатные Promises) и Callbacks.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64637
