Megérkezett a jQuery 4.0.0: modernizálás, CSP/Trusted Types, és néhány régóta esedékes törés
A jQuery 2006. január 14-én indult útjára, amikor John Resig a New York-i BarCamp-en bemutatta a könyvtárat. Húsz évvel később pedig itt a jQuery 4.0.0 végleges kiadása. A jQuery csapat szerint hosszú fejlesztési ciklus és több előzetes (pre-release) után érkezett meg ez a verzió, ami rengeteg modernizálást hoz, és mivel nagyverzióról van szó, néhány töréssel (breaking change) is számolni kell.
A jó hír: a bejelentés alapján a legtöbb projekt várhatóan minimális kódmódosítással át tud állni. A rossz hír: van pár olyan „mágikus” viselkedés és örökölt kompatibilitási réteg, amit végre kivettek, mert patch/minor kiadásban ezt nem lehetett volna megtenni.
Frissítés előtt
Átálláshoz a csapat külön upgrade guide-ot és frissített jQuery Migrate bővítményt is ad: https://jquery.com/upgrade-guide/4.0/ és https://github.com/jquery/jquery-migrate/.
Miért nagy dolog a 4.0.0?
Ez az első nagyverzió a jQuery-nél közel 10 év után, ezért több olyan régóta halogatott takarítás is bekerült, amit eddig csak deprecated státuszban tudtak „parkoltatni”. Röviden: kikerültek a régi böngészőkre célzott workaroundok, lekerültek elavult API-k, eltűntek dokumentálatlan belső paraméterek, és néhány túlkomplikált, „varázslatos” működés is egyszerűsödött.
Böngészőtámogatás: IE<11 kivezetve, IE11 még marad (egyelőre)
A jQuery 4.0 megszünteti az IE 10 és régebbi verziók támogatását. Sokan ilyenkor rögtön azt kérdezik: miért nem dobták ki az IE 11-et is? A bejelentés szerint a támogatást szakaszosan vezetik ki, és a következő lépcső a tervek szerint jQuery 5.0-ban jön: https://github.com/jquery/jquery/pull/5077.
Most tehát az a cél, hogy elsősorban az IE 11-nél régebbi verziókat kiszolgáló kód tűnjön el.
Emellett több nagyon régi böngésző támogatása is kikerült: Edge Legacy (a Chromium előtti Edge), iOS az utolsó 3 verziónál régebbiek, Firefox az utolsó 2 verziónál régebbiek (a Firefox ESR kivételével), valamint az Android Browser. A csapat szerint ez jellemzően nem igényel fejlesztői oldalon változtatást, de ha ezekre a böngészőkre még lőnöd kell, akkor maradj jQuery 3.x-en.
CSP és Trusted Types: biztonságosabb HTML-manipuláció
A jQuery 4.0 egyik fontos modernizálása a Trusted Types támogatás. A Trusted Types egy böngészős biztonsági mechanizmus (különösen CSP-s környezetben), amivel csökkenthető bizonyos XSS kockázatok esélye. A jQuery 4.0 úgy bővült, hogy a TrustedHTML-be csomagolt HTML-t a DOM-manipulációs metódusok be tudják fogadni anélkül, hogy sértenék a require-trusted-types-for Content Security Policy direktívát.
A bejelentés itt még egy gyakorlati változtatást is kiemel: korábban egyes AJAX script kéréseknél már <script> tagekkel dolgoztak azért, hogy megmaradjanak attribútumok (például crossdomain), most pedig a legtöbb aszinkron script kérés átállt <script> tag alapú betöltésre. A cél, hogy elkerülhetők legyenek a CSP hibák, amiket inline script használat okozhat.
Script kérések és headers
Van pár kivétel, amikor továbbra is XHR-t használnak aszinkron script kérésekhez – például ha a "headers" opciót átadod. A csapat kifejezetten jelzi: ilyen esetben inkább scriptAttrs használata javasolt.
A jQuery forráskódja ES module-okba költözött (AMD helyett)
Nagy belső váltás, hogy a main ágon a jQuery forráskódja AMD-ről (RequireJS-es világ) ES module-okra állt át. A jQuery forrás eddig is elérhető volt npm-en és GitHub-on, de modulárisan importálni közvetlenül nem igazán tudtad RequireJS nélkül, mert ez volt a preferált build eszköz.
A csapat azóta Rollup-ra váltott a csomagoláshoz, és külön futtatják a teszteket az ES module-os változatra is. Ez a váltás lényegében kompatibilisebbé teszi a jQuery-t a modern build toolinggal és fejlesztési workflowkkal, illetve a böngészőben is kézenfekvőbb a használat <script type=module> mellett.
Kikerültek a régóta deprecated API-k
A 4.0.0-ban végleg eltűnt egy csomó olyan függvény, ami több verzió óta deprecated volt. Ezek egy része eredetileg is belső használatra készült, más része pedig mára minden támogatott böngészőben rendelkezik natív megfelelővel.
A kiadási jegyzet alapján a következők kerültek ki:
jQuery.isArrayjQuery.parseJSONjQuery.trimjQuery.typejQuery.nowjQuery.isNumericjQuery.isFunctionjQuery.isWindowjQuery.camelCasejQuery.nodeNamejQuery.cssNumberjQuery.cssPropsjQuery.fx.interval
A javaslat egyértelmű: ahol lehet, válts natívra, például Array.isArray(), JSON.parse(), String.prototype.trim(), Date.now().
Érdekesség, hogy a deprecated API-k kiszedése és a régi IE-t támogató kód kigyomlálása együtt több mint 3 kB (gzip) méretcsökkenést hozott.
Belső Array metódusok törlése a jQuery prototype-ról: push/sort/splice
A jQuery prototype eddig tartalmazott pár Array metódust (push, sort, splice), amik nem viselkedtek úgy, mint a jQuery-s láncolható metódusok, és valójában belső használatra szánták őket. Ezek most kikerültek.
Ha valahol mégis használtad őket, a bejelentés konkrét cserét is ad: $elems.push( elem ) helyett [].push.call( $elems, elem ).
// jQuery 3.x környékén sok helyen elment, de 4.0-tól ez már nem működik:
// $elems.push(elem)
// 4.0 kompatibilis megoldás:
[].push.call($elems, elem);
Fókusz események: mostantól a W3C sorrend az alap (breaking change)
Hosszú ideig a böngészők nem értettek egyet a focus/blur események sorrendjében (ideértve a focusin, focusout, focus, blur eseményeket is). A jQuery évekkel ezelőtt beállított egy konzisztens, saját sorrendet, hogy a cross-browser viselkedés kiszámítható legyen.
Mostanra viszont a jQuery 4.0 által támogatott böngészők „összezártak” egy közös sorrendre – csak épp ez nem egyezik a jQuery korábbi választásával. Emiatt ez törést okoz, mert a jQuery 4.0-tól nem írják felül a natív viselkedést.
A jQuery 4.0-tól (IE kivételével) a jelenlegi W3C specifikáció szerinti sorrend érvényes:
- blur
- focusout
- focus
- focusin
A jQuery korábbi sorrendje ez volt: focusout, blur, focusin, focus. A kiadási jegyzet megjegyzi, hogy az egyetlen böngésző, ami valaha a régi W3C spec-et követte (mielőtt 2023-ban frissítették), az az Internet Explorer volt.
Slim build: még kisebb, Deferreds és Callbacks nélkül
A slim build jQuery 4.0.0-ban tovább zsugorodott, mert kikerültek belőle a Deferreds és a Callbacks modulok. A bejelentés szerint így már kb. 19,5 kB gzippelve.
A Deferreds régóta kompatibilis volt a Promises/A+ standarddal, így a legtöbb esetben natív Promise-okkal kiváltható. A csapat ugyanakkor jelzi: a Deferreds tud olyan extra funkciókat, amiket a natív Promise nem, de a tipikus használat nagy része átültethető Promise metódusokra.
IE11 és Promise
A natív Promise-ok minden jQuery 4.0 által támogatott böngészőben elérhetők, kivéve IE11-ben. Ha IE11 támogatás kell, akkor érdemesebb a „main build”-et használni, vagy Promise polyfillt beépíteni.
A slim build mögötti gyakorlati logika: sokszor nincs szükséged ajax-ra (vagy inkább egy külön, erre specializált libraryt használsz), animációhoz pedig elég lehet CSS + class manipuláció. Mivel a támogatott böngészők (IE11 kivételével) már hozzák a natív Promise-okat, a Deferreds/Callbacks modulok nélkülözhetők a legtöbb modern kódbázisban.
A bejelentés megjegyzi: a jQuery mérete manapság ritkán a teljesítmény fő szűk keresztmetszete, de a slim build kb. 8 kB (gzip) előnyt ad a teljes csomaghoz képest.
Letöltés: CDN és npm
A jQuery 4.0.0 elérhető a hivatalos CDN-en és npm-en is. Harmadik fél CDN-ek várhatóan szintén átveszik, de a kiadási ütemezésük nem a jQuery csapat kezében van, ezért érdemes pár nap átfutással számolni.
- CDN (unminified): https://code.jquery.com/jquery-4.0.0.js
- CDN (minified): https://code.jquery.com/jquery-4.0.0.min.js
- npm:
npm install jquery@4.0.0
npm install jquery@4.0.0
Slim build fájlok
- CDN (slim, unminified): https://code.jquery.com/jquery-4.0.0.slim.js
- CDN (slim, minified): https://code.jquery.com/jquery-4.0.0.slim.min.js
A kiadási jegyzet szerint ezek a frissítések már az aktuális verziók npm-en és Bower-en is. A beszerzési lehetőségek összefoglalója itt van: https://jquery.com/download/.
Ajánlott frissítési út: Upgrade guide + jQuery Migrate + issue report
A jQuery csapat külön kiemeli, hogy a váltáshoz készen áll az upgrade guide (https://jquery.com/upgrade-guide/4.0/) és a jQuery Migrate bővítmény (https://github.com/jquery/jquery-migrate/), ami tipikusan abban segít, hogy a régi API-használatot és mintákat jobban „kiszúrja” a futásidőben.
Ha frissítés közben problémába futsz, a hivatalos hibajegy útvonal a jQuery repo issues felülete: https://github.com/jquery/jquery/issues.
20 éves jubileum és jQuery-reunion
A 4.0.0 posztolása egy jQuery-s találkozó (reunion) alatt történt Dallasban, ahol a csapat több tagja személyesen volt jelen, John Resig pedig Zoomon csatlakozott.

Changelog: teljes összehasonlítás
A teljes changelogot a csapat GitHub compare nézetben adja: https://github.com/jquery/jquery/compare/3.7.1…4.0.0.
Változások modulonként (a hivatalos changelog alapján)
Az alábbi lista a jQuery 4.0.0 kiadási bejegyzésében szereplő modulonkénti változásokat követi. Ha frissítést tervezel, különösen a breaking change-ekkel érintett részeknél érdemes célzottan átnézni a saját kódbázisodat.
Ajax
- Tömb típusú data ne legyen automatikusan binárisként kezelve (992a1911)
- Legyen engedélyezett a
processData: truebináris adatoknál is (ce264e07) - Bináris adatok támogatása (FormData-val együtt) (a7ed9a7b)
headerstámogatás script transportnál cross-domain esetben is (#5142, 6d136443)nulllegyen elfogadott success függvénykéntjQuery.getesetén (#4989, 74978b7e)- Ne futtassa automatikusan a scriptet, ha nincs megadva dataType (#4822, 025da4dd)
- responseJSON működjön hibás same-domain JSONP kéréseknél is (68b4ec59)
- JSONP hiba script válaszok végrehajtása (#4771, a1e619b0)
- CSP hibák elkerülése script transportnál async kéréseknél (#3969, 07a8e4a1)
- A json → jsonp automatikus „promóció” logika kivezetése (#1799, #3376, e7b3bc48)
- s.contentType felülírása a content-type header értékével, ha van (#4119, 7fb90a6b)
- AJAX event aliasok deprecated státuszba mozgatása (23d53928)
- Sikertelen HTTP válaszokra ne futtasson scriptet (#4250, 50871a5a)
- jQuery.ajaxSettings.xhr egyszerűsítése (#1967, abdc89ac)
Attributes
.attr( name, false )minden nem-ARIA attribútumnál eltávolítást jelentsen (#5388, 063831b6)- Néhány bájt faragás (b40a4807)
- Attribútum setter ne stringesítsen automatikusan (#4948, 4250b628)
- A
toggleClass(boolean|undefined)szignatúra kivezetése (#3388, a4421101) - val() refaktor: ne stripeljen carriage returnt, IE workaroundok izolálása (ff281991)
- type attr hook ne legyen beállítva IE-n kívül (9e66fe9a)
CSS
- Táblázat
<col>elemek dimenzióinak javítása (#5628, eca2a564) - Cache eldobása finalPropName-ben (640d5825)
- Tesztjavítások és CSS Zoom alatti teszttámogatás (#5489, 071f6dba)
- reliableTrDimensions support teszt javítása kezdetben rejtett iframe-eknél (b1e66a5f)
- Selector: 3.x-hez igazítás, külső
selector.jswrapper eltávolítása (53cf7244) - reliableTrDimensions teszt működjön Bootstrap CSS-sel (#5270, 65b85031)
offsetHeight( true )stb. számoljon negatív margókkal is (#3982, bce13b72)- Whitespace-only CSS változó értékeknél
undefinedvisszaadása (#5120, 7eb00196) - Undefined custom property-nél ne trimeljen whitespace-t (#5105, ed306c02)
- Falsy értékek kihagyása
addClass( array )esetén + kód tömörítése (#4998, a338b407) - rtrim használatának indoklása CSS property értékeknél (655c0ed5)
- Whitespace trimelése CSS Custom Properties értékek körül (#4926, efadfe99)
show,hide,togglemetódusok legyenek a jQuery slim buildben is (297d18dd)- opacity CSS hook eltávolítása (865469f5)
- Buggy getComputedStyle workaround táblázat soroknál IE/Edge alatt (#4490, 26415e08)
- Ne adjon automatikusan „px”-et property-khez, néhány kivételtől eltekintve (#2795, 00a9c2e5)
Core
- Elavult workaroundok eltávolítása, support kommentek frissítése (e2fe97b7)
$.parseHTMLváltásadocument.implementation-rőlDOMParser-re (0e123509)- Export beállítások javítása bundlerekhez (ESM & CommonJS) (#5416, 60f11b58)
- Több információ a named exportokról (5f869590)
- Kód egyszerűsítése a böngészőtámogatás szűkítése után (93ca49e6)
- Factory külön exportokba mozgatása (46f6e3da)
- Named exportok használata
src/-ben (#5262, f75daab0) - Regresszió javítása jQuery.text() esetén HTMLDocument objektumokon (#5264, a75d6b52)
- Selector: jQuery.contains mozgatása selectorból core modulba (024d8719)
- A root paraméter kivezetése a jQuery.fn.init-ből (d2436df3)
- Ne támaszkodjon arra, hogy a splice jelen van az inputon (9c6f64c7)
- Manipulation: alap TrustedHTML támogatás (#4409, de5398a6)
- Böngésző hibák riportolása parseXML-ben (#4784, 89697325)
- jQuery.isXMLDoc fogadjon falsy inputot (#4782, fd421097)
- Edge Legacy támogatás kivezetése (#4568, e35fb62d)
- Iframe script futtatása saját kontextusban, doc param hozzáadása globalEval-ben (#4518, 4592595b)
- callbacks & deferred modulok kizárása a slim buildből is (fbc44f52)
- AMD → ES modules migráció (d0ce00cd)
- Array.prototype.flat használata, ahol támogatott (#4320, 9df4f1de)
- push/sort/splice privát másolatainak eltávolítása a jQuery prototype-ról (b59107f5)
- .even() & .odd() implementálása a POS :even & :odd kiváltására (78420d42)
- jQuery.trim deprecated státuszba helyezése (#4363, 5ea59460)
- IE-specifikus support tesztek eltávolítása, document.documentMode használata (#4386, 3527a384)
- Támogatás kivezetése: IE <11, iOS <11, Firefox <65, Android Browser & PhantomJS (#3950, #4299, cf84696f)
- Deprecated jQuery API-k eltávolítása (#4056, 58f0c00b)
Data
- Refaktor a méret csökkentésére (805cdb43)
- Event/Manipulation: ütközések megelőzése Object.prototype-pal (#3256, 9d76c0b1)
- Data és css/effects camelCase implementációk szétválasztása (#3355, 8fae2120)
Deferred
getStackHookátnevezésegetErrorHook-ra (#5201, 258ca1ec)- Source mapek tiszteletben tartása jQuery.Deferred.exceptionHook-ban (#3179, 0b9c5037)
- master → primary átnevezés (a32cf632)
Deprecated
.hover()definiálása nem-deprecated metódusokkal (fd6ffc5e)- jQuery.trim eltávolítása (0b676ae1)
- AMD paraméter sorrend javítása (f810080e)
Dimensions
- offset prop fallback FF-hez megbízhatatlan TR dimenziók esetén (#4529, 3bbbc111)
Docs
- Apró komment hibák javítása (e4d4dd81)
- Herodevs link frissítése README-ben (#5695, 093e63f9)
- CONTRIBUTING.md igazítása
3.x-stable-hez (d9281061) - CONTRIBUTING.md frissítése (4ef25b0d)
- Verziótámogatási szekció hozzáadása README-hez (cbc2bc1f)
- Megmaradt HTTP URL-ek frissítése HTTPS-re (7cdd8374)
- Modul linkek javítása a csomag README-ben (ace646f6)
- watch task frissítése CONTRIBUTING.md-ben (77d6ad71)
- codespell által talált elírások javítása (620870a1)
- Stale gitter badge eltávolítása readme-ből (67cb1af7)
- „Grunt build” szekció eltávolítása PR template-ből (988a5684)
- Stale badge eltávolítása README-ből (bcd9c2bc)
- Publikált csomag README frissítése (edccabf1)
- git.io említés eltávolítása GitHub Actions kommentből (016872ff)
- webpack website link frissítése README-ben (01819bc3)
- Link patchwelcome és help wanted issue-khoz (924b7ce8)
- Link az új CLA-k előnézetéhez (683ceb8f)
- Hibás
trac-NUMBERreferenciák javítása (eb9ceb2f) - Lejárt linkek eltávolítása régi jQuery source-ból (#4997, ed066ac7)
- Web Archive linkek eltávolítása source-ból (#4981, e24f2dcf)
#NUMBERTrac issue referenciák cseréjetrac-NUMBER-re (5d5ea015)- URL frissítése a legfrissebb jQuery buildre CONTRIBUTING.md-ben (9bdb16cd)
- CLA checkbox eltávolítása PR template-ből (e1248931)
- irc Libera-ra frissítés + LAMP dead link javítás (175db73e)
- Gyakran jelentett issue-k frissítése GitHub issue template-ben (7a6fae6a)
- JS Foundation említések cseréje OpenJS Foundationre (11611967)
- SECURITY.md hozzáadása, security email cím megjelenítése (2ffe54ca)
- Elírások javítása (1a7332ce)
- jsdom repo link frissítése (a62309e0)
- Hyperlinkek https-re állítása README-ben (73415da2)
- Egy event/alias.js modul említés eltávolítása README-ből (3edfa1bc)
- EdgeHTML issue linkek Web Archive-on keresztül (1dad1185)
- GitHub docs link a repo klónozásához (f1c16de2)
- OS X → macOS csere README-ben (5a3e0664)
- URL-ek többségének frissítése HTTPS-re (f09d9210)
- Homebrew link HTTP→HTTPS (e0022f23)
Effect
- Felesleges feltétel javítása .stop()-ban (#4374, 110802c7)
Effects
- jQuery.fx.interval eltávolítása (6c2c7362)
Event
- beforeunload esetén
.preventDefault()használata (7c123dec) - Belső natív event robusztusság növelése leverageNative-ben (#5459, 527fb3dc)
- Ütközések elkerülése jQuery.event.special és Object.prototype között (bcaeb000)
- Egyszerűsített ellenőrzés saved data-hoz leverageNative-ben (dfe212d5)
- trigger(focus/blur/click) működjön natív handlerekkel (#5015, 6ad3651d)
- Focus/blur szimuláció IE-ben focusin/focusout-tal (#4856, #4859, #4950, ce60d318)
- Ne törje el a focus triggerelést
.on(focus).off(focus)után (#4867, e539bac7) - Focus re-trigger ne fókuszálja vissza az eredeti elemet (#4382, dbcffb39)
- Ne omoljon össze, ha az elemet blur közben eltávolítják (#4417, 5c2d0870)
- event.which shim eltávolítása (#3235, 1a5fff4c)
- jQuery.event.global eltávolítása (18db8717)
- Események csak olyan objektumokra kerüljenek, amik ténylegesen elfogadnak data-t (#4397, d5c505e3)
- Fókuszin/fókuszout események shimmelésének leállítása (#4300, 8a741376)
- leverageNative ne regisztráljon duplikált dummy handlereket (eb6c0a7c)
- Több async focus event kezelése (#4350, ddfa8376)
Manipulation
- jQuery.cleanData ne hagyjon ki elemeket takarítás közben (#5214, 3cad5c43)
- Teszt általánosítása IE támogatáshoz (88690ebf)
$el.html(selfRemovingScript)támogatása (#5378) (#5377, 937923d9)- domManip kiszervezése külön fájlba (ee6e8740)
- HTML kommentek ne legyenek eltávolítva scriptből (#4904, 2f8f39e4)
- Script crossorigin attribútum tiszteletben tartása DOM manipulációban (#4542, 15ae3614)
- Stringkonkatenáció elkerülése buildFragment-ben (9c98e4e8)
- jQuery.htmlPrefilter legyen identity function (90fed4b4)
- Selector: nodeName util használata, ahol lehet, méretcsökkentéshez (4504fc3d)
Offset
- Keresési mélység növelése a „valódi” offset parent megtalálásához (556eaf4a)
Release
- 4.0.0 (4f2fae08)
- dist fájlok eltávolítása a main branch-ről (c838cfb5)
- 4.0.0-rc.2 (97525193)
- AUTHORS.txt frissítése (c128d5d8)
- Release problémák javítása 4.0.0-rc.1 után (a5b0c431)
- dist fájlok eltávolítása a main branch-ről (9d06c6dd)
- 4.0.0-rc.1 (586182f3)
npm publishfuttatása post-release fázisban (ff1f0eaa)- Csak browserless tesztek futtatása release alatt (fb5ab0f5)
- Tesztfuttatás ideiglenes letiltása release-nél (3f79644b)
- tmp/release/dist publikálása release-nél (#5658, a865212d)
- Build dátum javítása verificationben + további fejlesztések (53ad94f3)
- dist fájlok eltávolítása a main branch-ről (be048a02)
- 4.0.0-beta.2 (51fffe9f)
- Build-eknél a megfelelő verzió biztosítása (3e612aee)
- preReleaseBase beállítása configban (1fa8df5d)
- Pre/post release scriptek windows futásának javítása (5518b2da)
- AUTHORS.txt frissítése (862e7a18)
- Release folyamat migrációja release-it-re (jquery/jquery-release#114, 2646a8b0)
- Factory fájlok hozzáadása release disztribúcióhoz (#5411, 1a324b07)
- buildDefaultFiles közvetlen használata + verzió átadása (b507c864)
- dist-module mappa másolása (63767650)
- Csak verziózott fájlok publikálása CDN-re (3a0ca684)
- Scriptek és dev dep-ek eltávolítása dist package.json-ból (7eac932d)
- Build parancs frissítése Release.generateArtifacts-ben (3b963a21)
- md5 checksum támogatás Windows alatt (f088c366)
- Ne kelljen global grunt telepítés (b2bbaa36)
- Release dependency-k frissítése (967af732)
- Nem használt chalk dependency eltávolítása (bfb6897c)
- Repo-n belüli dist README fixture használata (358b769a)
- AUTHORS.txt frissítése (1b74660f)
- AUTHORS.txt frissítése (cf9fe0f6)
Selector
:hasworkaround eltávolítása; tesztek iPhone-on és iPad-en (65e35450)jQuery.expr[ ":" ]/jQuery.expr.filtershelyes deprecated jelölése (329661fd)selector.jsfüggjönattributes/attr.js-től (#5379, e06ff088)- selector.js függőségek eliminálása több modulból (e8b7db4b)
- jQuery.find.{tokenize,select,compile,setDocument} újra exportálása (#5259, 338de359)
- Ne támaszkodjon
CSS.supports( "selector(...)" )-ra (#5194, 68aa2ef7) - jQuery selection context logika backport selector-native-hoz (#5185, 2e644e84)
- Selector listák működjenek újra
qSA-val (#5177, 09d988b7) uniqueSortchainable metódus implementálása (#5166, 5266f23c)- selector-native.js visszahozása (4c1171f2)
- Manipulation: DOM manipuláció javítása template contents esetén (#5147, 3299236c)
- Legacy pseudos támogatás eldobása, custom pseudos tesztelése (8c7da22c)
- jQuery
:hashasználata, haCSS.supports(selector(...))nem kompatibilis (#5098, d153c375) - „a:enabled” workaround eltávolítása Chrome <=77-re (c1ee33ad)
- Üres attribútum selectorok működjenek újra IE-ben (#4435, 05184cc4)
- Shallow document comparison uniqueSort-ban (#4441, 15750b0a)
- Teszt a post-comma invalid selectorok dobására (6eee5f7f)
- Leading combinatorral induló selectorok használják újra qSA-t (ed66d5a2)
- Shallow document comparison IE/Edge crash elkerülésére (#4441, aa6344ba)
- Méretcsökkentés, setDocument egyszerűsítés (29a9544a)
- :scope pseudo-class használata, ahol lehet (#4453, df6a7f7f)
- querySelectorAll shortcut visszahozása (cef4b731)
- Sizzle inline-olása a selector modulba (47835965)
- Sizzle tesztek portolása jQuery-be (79b74e04)
Support
- support div display legyen block (#4832, 09f25436)
Traversing
contents()javítása<object>elemeknél gyermekekkel IE-ben (ccbd6b93)contents()javítása<object>elemeknél gyermekekkel (#4384, 4d865d96)
Összefoglalás: kinek érdemes lépni, és mire figyelj
A jQuery 4.0.0 egy klasszikus „nagytakarítós” nagyverzió: kevesebb legacy, modernebb build (ES modules + Rollup), biztonsági szempontból fontos CSP/Trusted Types irány, és néhány régóta esedékes API-kivezetés. A legkockázatosabb pontok tipikusan az IE<11 támogatás megszűnése, a fókusz események sorrendjének változása, illetve a deprecated API-k és a prototype-ról lekerült Array metódusok. Cserébe kapsz egyszerűbb kódot, kisebb csomagot, és egy lépéssel modernebb jQuery-t.
Hivatkozások / Források
Szabó Péter
Full-stack fejlesztő, JavaScript és Vue.js rajongó. Cikkeimet a gyakorlati problémamegoldás inspirálja. Ha nem kódolok, akkor biztosan podcastot hallgatok.
Összes bejegyzés