Po téměř 10 letech od vydání verze 3.0 a 20 let od založení projektu byla vydána knihovna JavaScriptu jQuery 4.0, která podle údajů organizace W3Techs používá 70,9 % z 10 milionů nejnavštěvovanějších webových stránek. Kód jQuery je šířen pod licencí MIT.
Vydání jQuery 4.0 obsahuje změny, které narušují zpětnou kompatibilitu, ale podle vývojářů většina uživatelů bude moci bezbolestně přejít na novou verzi s minimálními změnami ve svém kódu. Pro usnadnění migrace lze použít speciální plugin. Narušení zpětné kompatibility souvisí s odstraněním zastaralého kódu, odstraněním některých interních nedokumentovaných parametrů, ukončením podpory některého nadměrně zjednodušeného chování a ukončením podpory API, které byly dříve označeny jako zastaralé. Odstranění zastaralých API a prohlížečů umožnilo zmenšit velikost gzip archivu s knihovnou o 3 kB (slim verze nyní zabírá 19,5 kB, zatímco plná verze 27,5 kB).
Mezi změnami:
- Byla ukončena podpora prohlížeče IE 10 a starších verzí (podpora IE 11 byla zachována, ale bude odstraněna ve verzi Query 5.0) a také pro další staré prohlížeče, jako jsou Edge Legacy, Android Browser a Firefox do verze 115.
- Byla integrována podpora API Trusted Types, které je vyvíjeno pro ochranu před manipulacemi s DOM, vedoucími k mezivrstvovému skriptování (DOM XSS), například při nesprávném zpracování dat přijatých od uživatele v blocích eval() nebo při vkládání pomocí .innerHTML, což může vést k provedení JavaScriptového kódu v kontextu určité stránky. V metodách jQuery nyní může být HTML kód předáván ve formě objektů TrustedHTML.
- Kód jQuery byl převeden na používání JavaScriptových modulů ESM (ECMAScript Module) a může být dodáván a importován jako modul.
- Byly odstraněny funkce, které byly dříve označeny jako zastaralé: jQuery.isArray, jQuery.parseJSON, jQuery.trim, jQuery.type, jQuery.now, jQuery.isNumeric, jQuery.isFunction, jQuery.isWindow, jQuery.camelCase, jQuery.nodeName, jQuery.cssNumber, jQuery.cssProps a jQuery.fx.interval. Místo těchto funkcí se doporučuje používat nativní JavaScriptové funkce Array.isArray(), JSON.parse(), String.prototype.trim() a Date.now()
- Byly odstraněny nedokumentované interní metody objektu Array — push, sort a splice.
- Pořadí zpracování událostí změny fokusu bylo uvedeno do souladu se specifikací W3C — blur, focusout, focus a focusin.
- Velikost zkrácené varianty (slim), která neobsahuje moduly ajax a effects, byla zkrácena na 19,5 kB díky ukončení dodávky objektů Deferred (doporučuje se používat standardní Promises) a Callbacks.
Zdroj: opennet.ru
