{"id":128,"date":"2026-01-19T00:00:00","date_gmt":"2026-01-18T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/cs\/jquery-4-0-0\/"},"modified":"2026-01-19T00:00:00","modified_gmt":"2026-01-18T23:00:00","slug":"jquery-4-0-0","status":"publish","type":"post","link":"https:\/\/helloblog.io\/cs\/jquery-4-0-0\/","title":{"rendered":"jQuery 4.0.0 je venku: nejv\u011bt\u0161\u00ed major release za t\u00e9m\u011b\u0159 dek\u00e1du (a co ti m\u016f\u017ee rozb\u00edt)"},"content":{"rendered":"\n<p>Jestli m\u00e1\u0161 ve firm\u011b st\u00e1le kus UI postaven\u00fd na jQuery (a\u0165 u\u017e p\u0159\u00edmo, nebo p\u0159es pluginy a star\u0161\u00ed admin \u0161ablony), jQuery 4.0.0 je release, kter\u00fd stoj\u00ed za pozornost. Je to prvn\u00ed major verze po t\u00e9m\u011b\u0159 10 letech a p\u0159ich\u00e1z\u00ed po n\u011bkolika pre-release kolech \u2013 z\u00e1rove\u0148 jde o vyd\u00e1n\u00ed k 20. v\u00fdro\u010d\u00ed jQuery (poprv\u00e9 p\u0159edstaveno 14. ledna 2006 na BarCampu v New Yorku).<\/p>\n\n\n\n<p>jQuery t\u00fdm tentokr\u00e1t vyu\u017eil major release p\u0159esn\u011b k tomu, k \u010demu m\u00e1 slou\u017eit: vyh\u00e1zet historick\u00e9 berli\u010dky, odstranit d\u00e1vno deprecated API, pro\u010distit \u201emagic\u201c chov\u00e1n\u00ed a zmodernizovat intern\u00ed architekturu. V\u00fdsledkem je knihovna, kter\u00e1 je \u010dist\u0161\u00ed, men\u0161\u00ed a l\u00e9pe zapad\u00e1 do dne\u0161n\u00edch build chain\u016f i bezpe\u010dnostn\u00edch politik pro web. Z\u00e1rove\u0148 ale plat\u00ed, \u017ee upgrade m\u016f\u017ee narazit na breaking changes \u2013 tak\u017ee ne\u017e p\u0159epne\u0161 z 3.x, je dobr\u00e9 v\u011bd\u011bt, kam se d\u00edvat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ne\u017e upgraduje\u0161: k \u010demu slou\u017e\u00ed upgrade guide a jQuery Migrate<\/h2>\n\n\n\n<p>T\u00fdm po\u010d\u00edt\u00e1 s t\u00edm, \u017ee v\u011bt\u0161ina projekt\u016f p\u0159ejde z jQuery 3.x na 4.0.0 s minimem zm\u011bn, ale proto\u017ee jde o major release, n\u011bkter\u00e9 v\u011bci se u\u017e opravit \u201ena pozad\u00ed\u201c nedaj\u00ed. Pro p\u0159echod jsou p\u0159ipraven\u00e9 dv\u011b kl\u00ed\u010dov\u00e9 pom\u016fcky:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Ofici\u00e1ln\u00ed upgrade guide pro 4.0: https:\/\/jquery.com\/upgrade-guide\/4.0\/<\/li>\n\n\n<li>Nov\u00e1 verze jQuery Migrate pluginu: https:\/\/github.com\/jquery\/jquery-migrate\/<\/li>\n\n<\/ul>\n\n\n\n<p>Pokud b\u011bhem migrace naraz\u00ed\u0161 na bug nebo regresi, issues se \u0159e\u0161\u00ed na GitHubu: https:\/\/github.com\/jquery\/jquery\/issues.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Konec podpory IE < 11 (a dal\u0161\u00ed hodn\u011b star\u00e9 prohl\u00ed\u017ee\u010de)<\/h2>\n\n\n\n<p>jQuery 4.0 zahazuje podporu pro Internet Explorer 10 a star\u0161\u00ed. \u010cast\u00e1 ot\u00e1zka je \u201epro\u010d ne rovnou IE 11\u201c \u2013 podle ozn\u00e1men\u00ed cht\u011bj\u00ed j\u00edt postupn\u011b a dal\u0161\u00ed krok m\u00e1 p\u0159ij\u00edt a\u017e v jQuery 5.0 (viz pl\u00e1novan\u00fd krok v PR: https:\/\/github.com\/jquery\/jquery\/pull\/5077). V r\u00e1mci 4.0 tedy miz\u00ed k\u00f3d, kter\u00fd byl specificky kv\u016fli IE verz\u00edm p\u0159ed 11.<\/p>\n\n\n\n<p>Krom\u011b toho jQuery 4.0 ukon\u010duje podporu pro dal\u0161\u00ed historick\u00e9 prohl\u00ed\u017ee\u010de. Konkr\u00e9tn\u011b u\u017e nec\u00edl\u00ed na:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Edge Legacy (p\u016fvodn\u00ed EdgeHTML, ne Chromium Edge)<\/li>\n\n\n<li>iOS verze star\u0161\u00ed ne\u017e posledn\u00ed 3<\/li>\n\n\n<li>Firefox verze star\u0161\u00ed ne\u017e posledn\u00ed 2 (v\u00fdjimkou je Firefox ESR)<\/li>\n\n\n<li>Android Browser<\/li>\n\n<\/ul>\n\n\n\n<p>Podle release notes by to pro v\u011bt\u0161inu aplikac\u00ed nem\u011blo znamenat zm\u011bny v k\u00f3du \u2013 jen se zjednodu\u0161ila intern\u00ed implementace a testy. Pokud ale z n\u011bjak\u00e9ho d\u016fvodu po\u0159\u00e1d pot\u0159ebuje\u0161 tyhle prohl\u00ed\u017ee\u010de podporovat, doporu\u010den\u00ed je z\u016fstat na jQuery 3.x.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trusted Types a p\u0159\u00edsn\u011bj\u0161\u00ed CSP: jQuery se p\u0159izp\u016fsobuje modern\u00ed bezpe\u010dnosti<\/h2>\n\n\n\n<p>Modern\u00ed webov\u00e9 aplikace \u010d\u00edm d\u00e1l \u010dast\u011bji jedou na striktn\u00edm Content Security Policy (CSP). jQuery 4.0 proto p\u0159id\u00e1v\u00e1 podporu pro Trusted Types \u2013 tedy mechanismus, kter\u00fd pom\u00e1h\u00e1 br\u00e1nit XSS t\u00edm, \u017ee citliv\u00e9 \u201esink\u201c operace p\u0159ij\u00edmaj\u00ed jen hodnoty typ\u016f jako <code>TrustedHTML<\/code> (MDN: https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML). Z pohledu praxe to znamen\u00e1, \u017ee HTML zabalen\u00e9 v <code>TrustedHTML<\/code> m\u016f\u017ee\u0161 p\u0159edat do jQuery manipula\u010dn\u00edch metod zp\u016fsobem, kter\u00fd neporu\u0161\u00ed direktivu <code>require-trusted-types-for<\/code>.<\/p>\n\n\n\n<p>S CSP souvis\u00ed je\u0161t\u011b jedna d\u016fle\u017eit\u00e1 zm\u011bna kolem na\u010d\u00edt\u00e1n\u00ed skript\u016f p\u0159es AJAX transport. \u010c\u00e1st request\u016f u\u017e historicky pou\u017e\u00edvala <code>&lt;script&gt;<\/code> tagy kv\u016fli atribut\u016fm jako <code>crossdomain<\/code>. Te\u010f jQuery p\u0159eplo v\u011bt\u0161inu asynchronn\u00edch script request\u016f na <code>&lt;script&gt;<\/code> tagy (zm\u011bna popsan\u00e1 v PR: https:\/\/github.com\/jquery\/jquery\/pull\/4763), aby se minimalizovaly CSP chyby, kter\u00e9 vznikaj\u00ed p\u0159i pou\u017e\u00edv\u00e1n\u00ed inline skript\u016f.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Pozor na headers u script transportu<\/h4>\n\n\n<p>St\u00e1le existuj\u00ed p\u0159\u00edpady, kdy se pro asynchronn\u00ed script request pou\u017eije XHR \u2013 typicky kdy\u017e p\u0159ed\u00e1\u0161 volbu <code>&quot;headers&quot;<\/code>. Release notes explicitn\u011b doporu\u010duj\u00ed pou\u017e\u00edt m\u00edsto toho <code>scriptAttrs<\/code>.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Zdroj\u00e1ky jQuery p\u0159e\u0161ly z AMD na ES modules<\/h2>\n\n\n\n<p>Jedna z nejv\u011bt\u0161\u00edch intern\u00edch modernizac\u00ed: k\u00f3d v branchi <code>main<\/code> byl p\u0159eveden z AMD (Asynchronous Module Definition; typicky RequireJS) na ES modules. Praktick\u00fd dopad je velk\u00fd hlavn\u011b pro build n\u00e1stroje a modern\u00ed workflow \u2013 jQuery zdroj byl sice v\u017edy publikovan\u00fd na npm i GitHubu, ale bez RequireJS ne\u0161el rozumn\u011b importovat jako modul. To se te\u010f m\u011bn\u00ed.<\/p>\n\n\n\n<p>Sou\u010d\u00e1st\u00ed zm\u011bny je i p\u0159echod balen\u00ed na Rollup (https:\/\/rollupjs.org\/introduction\/). Testy se nav\u00edc spou\u0161t\u011bj\u00ed i nad ES modules variantou. V\u00fdsledek: jQuery je kompatibiln\u011bj\u0161\u00ed s dne\u0161n\u00edmi bundlery i s nativn\u00edm na\u010d\u00edt\u00e1n\u00edm p\u0159es <code>&lt;script type=module&gt;<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Odstran\u011bn\u00e1 deprecated API: co zmizelo a \u010d\u00edm to nahradit<\/h2>\n\n\n\n<p>V jQuery 4.0 \u0161ly pry\u010d funkce, kter\u00e9 byly ozna\u010den\u00e9 jako deprecated u\u017e n\u011bkolik verz\u00ed. \u010c\u00e1st z nich byla v\u017edycky sp\u00ed\u0161 intern\u00ed, \u010d\u00e1st dnes nahrazuj\u00ed standardn\u00ed nativn\u00ed API v prohl\u00ed\u017ee\u010d\u00edch, kter\u00e9 jQuery 4.0 je\u0161t\u011b podporuje. Seznam odstran\u011bn\u00fdch polo\u017eek je dlouh\u00fd a je dobr\u00e9 ho proj\u00edt, pokud m\u00e1\u0161 star\u0161\u00ed codebase nebo pluginy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>jQuery.isArray<\/code><\/li>\n\n\n<li><code>jQuery.parseJSON<\/code><\/li>\n\n\n<li><code>jQuery.trim<\/code><\/li>\n\n\n<li><code>jQuery.type<\/code><\/li>\n\n\n<li><code>jQuery.now<\/code><\/li>\n\n\n<li><code>jQuery.isNumeric<\/code><\/li>\n\n\n<li><code>jQuery.isFunction<\/code><\/li>\n\n\n<li><code>jQuery.isWindow<\/code><\/li>\n\n\n<li><code>jQuery.camelCase<\/code><\/li>\n\n\n<li><code>jQuery.nodeName<\/code><\/li>\n\n\n<li><code>jQuery.cssNumber<\/code><\/li>\n\n\n<li><code>jQuery.cssProps<\/code><\/li>\n\n\n<li><code>jQuery.fx.interval<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>N\u00e1hrady jsou typicky p\u0159\u00edmo\u010da\u0159e nativn\u00ed: <code>Array.isArray()<\/code>, <code>JSON.parse()<\/code>, <code>String.prototype.trim()<\/code> nebo <code>Date.now()<\/code>.<\/p>\n\n\n\n<p>Tahle \u010distka spolu s odstran\u011bn\u00edm IE<11 kompatibility p\u0159inesla i konkr\u00e9tn\u00ed zmen\u0161en\u00ed distribuce \u2013 v\u00edce ne\u017e 3 kB (gzipped).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pry\u010d s intern\u00edmi Array metodami na jQuery prototype: push, sort, splice<\/h2>\n\n\n\n<p>jQuery objekt se dlouho choval \u201etrochu jako pole\u201c, ale m\u011bl na prototypu n\u011bkter\u00e9 Array metody, kter\u00e9 se nechovaly jako ostatn\u00ed jQuery metody a byly ur\u010den\u00e9 jen pro intern\u00ed pou\u017eit\u00ed: <code>push<\/code>, <code>sort<\/code> a <code>splice<\/code>. V jQuery 4.0 byly odstran\u011bn\u00e9 z prototypu.<\/p>\n\n\n\n<p>Pokud jsi je (by\u0165 omylem) pou\u017e\u00edval v aplikaci nebo pluginu, mus\u00ed\u0161 p\u0159epsat vol\u00e1n\u00ed na \u010dist\u00e9 Array prototypy. Release notes uv\u00e1d\u011bj\u00ed p\u0159\u00edmo tento ekvivalent:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ P\u0159edt\u00edm (v n\u011bkter\u00fdch projektech):\n\/\/ $elems.push(elem)\n\n\/\/ Te\u010f:\n[].push.call($elems, elem);\n\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\">\/\/ P\u0159edt\u00edm (v n\u011bkter\u00fdch projektech):<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ $elems.push(elem)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Te\u010f:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[].push.<\/span><span style=\"color:#B392F0\">call<\/span><span style=\"color:#E1E4E8\">($elems, elem);<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Breaking change, kter\u00fd um\u00ed zabolet: po\u0159ad\u00ed focus\/blur event\u016f se \u0159\u00edd\u00ed W3C<\/h2>\n\n\n\n<p>Tohle je jedna z t\u011bch zm\u011bn, kter\u00e9 jsou nen\u00e1padn\u00e9, ale kdy\u017e m\u00e1\u0161 komplexn\u00ed formul\u00e1\u0159e, validace a \u201efocus management\u201c, um\u00ed to b\u00fdt zr\u00e1dn\u00e9. Historicky se prohl\u00ed\u017ee\u010de neshodly na po\u0159ad\u00ed event\u016f kolem focus a blur: <code>focusin<\/code>, <code>focusout<\/code>, <code>focus<\/code>, <code>blur<\/code>. jQuery kdysi sjednotilo po\u0159ad\u00ed \u201epo sv\u00e9m\u201c a p\u0159episovalo nativn\u00ed chov\u00e1n\u00ed.<\/p>\n\n\n\n<p>Jen\u017ee modern\u00ed prohl\u00ed\u017ee\u010de podporovan\u00e9 jQuery 4.0 se kone\u010dn\u011b shodly \u2013 ale na po\u0159ad\u00ed, kter\u00e9 se li\u0161\u00ed od historick\u00e9 volby jQuery. Od jQuery 4.0 se proto nativn\u00ed chov\u00e1n\u00ed u\u017e nep\u0159episuje. V\u0161echny prohl\u00ed\u017ee\u010de krom\u011b IE budou n\u00e1sledovat aktu\u00e1ln\u00ed W3C specifikaci:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>blur<\/li>\n\n\n<li>focusout<\/li>\n\n\n<li>focus<\/li>\n\n\n<li>focusin<\/li>\n\n<\/ol>\n\n\n\n<p>V jQuery 3.x a star\u0161\u00edch bylo po\u0159ad\u00ed: <code>focusout<\/code>, <code>blur<\/code>, <code>focusin<\/code>, <code>focus<\/code>. Zaj\u00edmav\u00fd detail z release notes: jedin\u00fd prohl\u00ed\u017ee\u010d, kter\u00fd dlouhodob\u011b odpov\u00eddal star\u00e9 verzi W3C specifikace (p\u0159ed aktualizac\u00ed v roce 2023), byl Internet Explorer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Slim build je je\u0161t\u011b \u0161t\u00edhlej\u0161\u00ed: bez Deferreds a Callbacks<\/h2>\n\n\n\n<p>jQuery 4.0 aktualizuje i tzv. slim build. Ten je te\u010f je\u0161t\u011b men\u0161\u00ed \u2013 zhruba 19,5 kB gzipped. Nejv\u011bt\u0161\u00ed zm\u011bna: ve slim verzi jsou odstran\u011bn\u00e9 moduly Deferreds a Callbacks.<\/p>\n\n\n\n<p>Deferreds m\u011bly dlouho kompatibilitu se standardem Promises\/A+ (https:\/\/promisesaplus.com\/), tak\u017ee v praxi m\u016f\u017ee\u0161 ve v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f p\u0159ej\u00edt na nativn\u00ed <code>Promise<\/code>. Na tohle dnes maj\u00ed podporu v\u0161echny prohl\u00ed\u017ee\u010de, kter\u00e9 jQuery 4.0 c\u00edl\u00ed \u2013 s v\u00fdjimkou IE 11.<\/p>\n\n\n\n<p>Deferreds sice um\u00ed n\u011bkter\u00e9 v\u011bci nav\u00edc oproti nativn\u00edm Promise, ale b\u011b\u017en\u00e9 pou\u017eit\u00ed jde obvykle migrovat na Promise metody. Pokud pot\u0159ebuje\u0161 podporovat IE11, d\u00e1v\u00e1 smysl z\u016fstat u \u201emain\u201c buildu, nebo doplnit polyfill pro nativn\u00ed Promise.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Kdy slim d\u00e1v\u00e1 smysl<\/h4>\n\n\n<p>Slim je ur\u010den\u00fd pro sc\u00e9n\u00e1\u0159e, kdy nepot\u0159ebuje\u0161 ajax, nebo pou\u017e\u00edv\u00e1\u0161 samostatnou knihovnu pro requesty. Podobn\u011b pro animace \u010dasto vysta\u010d\u00ed\u0161 s CSS a manipulac\u00ed t\u0159\u00eddami.<\/p>\n\n<\/div>\n\n\n\n<p>Pozn\u00e1mka k efekt\u016fm: i slim build v jQuery 4.0 zahrnuje metody <code>show<\/code>, <code>hide<\/code> a <code>toggle<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak jQuery 4.0.0 st\u00e1hnout: CDN, npm a slim soubory<\/h2>\n\n\n\n<p>jQuery 4.0.0 je k dispozici p\u0159es ofici\u00e1ln\u00ed jQuery CDN i p\u0159es npm. Ostatn\u00ed ve\u0159ejn\u00e9 CDN ji podle ozn\u00e1men\u00ed obvykle p\u0159evezmou se zpo\u017ed\u011bn\u00edm (jejich release schedule jQuery t\u00fdm nekontroluje), tak\u017ee pro rychl\u00fd start je nejjist\u011bj\u0161\u00ed ofici\u00e1ln\u00ed CDN.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CDN odkazy (full build)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.js<\/li>\n\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.min.js<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">npm<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>npm install jquery@4.0.0\n\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">npm<\/span><span style=\"color:#9ECBFF\"> install<\/span><span style=\"color:#9ECBFF\"> jquery@4.0.0<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Slim build (CDN odkazy)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.slim.js<\/li>\n\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.slim.min.js<\/li>\n\n<\/ul>\n\n\n\n<p>Aktu\u00e1ln\u00ed zp\u016fsoby distribuce jsou dostupn\u00e9 i p\u0159es npm a Bower. P\u0159ehled v\u0161ech variant a doporu\u010den\u00ed je na https:\/\/jquery.com\/download\/.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vybran\u00e9 zm\u011bny v 4.0.0 changelogu (orienta\u010dn\u011b podle modul\u016f)<\/h2>\n\n\n\n<p>Kompletn\u00ed diff mezi 3.7.1 a 4.0.0 je tady: https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1&#8230;4.0.0. N\u00ed\u017ee je p\u0159ehled zm\u011bn, kter\u00e9 stoj\u00ed za vyp\u00edchnut\u00ed, zejm\u00e9na pokud maintenuje\u0161 pluginy nebo knihovnu pou\u017e\u00edv\u00e1\u0161 netradi\u010dn\u00edmi zp\u016fsoby.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ajax<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Zm\u011bna pr\u00e1ce s bin\u00e1rn\u00edmi daty: netv\u00e1\u0159it se, \u017ee <code>array<\/code> data jsou bin\u00e1rn\u00ed; z\u00e1rove\u0148 povolit <code>processData: true<\/code> i pro bin\u00e1rn\u00ed data; podpora bin\u00e1rn\u00edch dat v\u010detn\u011b <code>FormData<\/code>.<\/li>\n\n\n<li>Podpora <code>headers<\/code> pro script transport i kdy\u017e je cross-domain (#5142) \u2013 z\u00e1rove\u0148 plat\u00ed doporu\u010den\u00ed preferovat <code>scriptAttrs<\/code> pro atributy u <code>&lt;script&gt;<\/code> tagu.<\/li>\n\n\n<li><code>null<\/code> jako success callback v <code>jQuery.get<\/code> (#4989).<\/li>\n\n\n<li>Skripty se automaticky nespou\u0161t\u00ed, pokud nen\u00ed uveden\u00fd <code>dataType<\/code> (#4822).<\/li>\n\n\n<li><code>responseJSON<\/code> funguje i pro chybov\u00e9 same-domain JSONP po\u017eadavky; nav\u00edc se vykon\u00e1vaj\u00ed JSONP error script responses (#4771).<\/li>\n\n\n<li>Omezen\u00ed CSP chyb v script transportu pro async requesty (#3969).<\/li>\n\n\n<li>Zahozen\u00ed auto-promote logiky json \u2192 jsonp (#1799, #3376).<\/li>\n\n\n<li>Pokud odpov\u011b\u010f po\u0161le <code>content-type<\/code> header, p\u0159ep\u00ed\u0161e se <code>s.contentType<\/code> jeho hodnotou (#4119).<\/li>\n\n\n<li>AJAX event aliasy jsou deprecated (alias\/inline eventy jsou \u0159e\u0161en\u00e9 p\u0159es deprecated vrstvu).<\/li>\n\n\n<li>Skripty se nespou\u0161t\u00ed p\u0159i ne\u00fasp\u011b\u0161n\u00fdch HTTP odpov\u011bd\u00edch (#4250).<\/li>\n\n\n<li>Zjednodu\u0161en\u00ed <code>jQuery.ajaxSettings.xhr<\/code> (#1967).<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Attributes a t\u0159\u00eddy<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>.attr(name, false)<\/code> nov\u011b odstra\u0148uje atribut pro v\u0161echny ne-ARIA atributy (#5388).<\/li>\n\n\n<li>Setter pro atributy u\u017e atributy \u201enaslepo\u201c nestringifikuje (#4948).<\/li>\n\n\n<li>Zru\u0161en\u00ed signatury <code>toggleClass(boolean|undefined)<\/code> (#3388).<\/li>\n\n\n<li><code>val()<\/code> refaktor: neodstra\u0148uje carriage return a IE workarounds jsou izolovan\u00e9.<\/li>\n\n\n<li>Mimo IE se u\u017e v\u016fbec nenasazuje hook na <code>type<\/code> atribut.<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CSS<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Opravy rozm\u011br\u016f pro table <code>&lt;col&gt;<\/code> elementy (#5628).<\/li>\n\n\n<li>Ukl\u00edzen\u00ed cache ve <code>finalPropName<\/code>.<\/li>\n\n\n<li>Testy opraven\u00e9 a b\u011bh test\u016f i pod CSS Zoom (#5489).<\/li>\n\n\n<li>Vylep\u0161en\u00ed support test\u016f pro rozm\u011bry table rows (v\u010detn\u011b p\u0159\u00edpad\u016f se skryt\u00fdmi iframe a kompatibility s Bootstrap CSS).<\/li>\n\n\n<li><code>offsetHeight(true)<\/code> a podobn\u00e9 v\u00fdpo\u010dty zahrnuj\u00ed i negativn\u00ed margins (#3982).<\/li>\n\n\n<li>U CSS Custom Properties: whitespace-only hodnoty vrac\u00ed <code>undefined<\/code> (#5120), ne\u0159e\u017ee se whitespace u <code>undefined<\/code> custom property (#5105), trim okolo hodnot je upraven\u00fd (#4926).<\/li>\n\n\n<li><code>addClass(array)<\/code> ignoruje falsy hodnoty (#4998).<\/li>\n\n\n<li>Slim build zahrnuje <code>show<\/code>\/<code>hide<\/code>\/<code>toggle<\/code>.<\/li>\n\n\n<li>Odstran\u011bn\u00ed opacity CSS hooku.<\/li>\n\n\n<li>Workaround pro buggy <code>getComputedStyle<\/code> na table rows v IE\/Edge (#4490).<\/li>\n\n\n<li>jQuery u\u017e automaticky nep\u0159id\u00e1v\u00e1 <code>px<\/code> k vlastnostem a\u017e na p\u00e1r v\u00fdjimek (#2795).<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Core (j\u00e1dro) a modul\u00e1rn\u00ed exporty<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>$.parseHTML<\/code> p\u0159eplo intern\u011b z <code>document.implementation<\/code> na <code>DOMParser<\/code>.<\/li>\n\n\n<li>\u00dapravy export\u016f pro lep\u0161\u00ed kompatibilitu bundler\u016f s ESM &#038; CommonJS (#5416), v\u010detn\u011b dopln\u011bn\u00ed informac\u00ed o named exports.<\/li>\n\n\n<li>Odstran\u011bn\u00ed <code>root<\/code> parametru z <code>jQuery.fn.init<\/code>.<\/li>\n\n\n<li>TrustedHTML podpora v manipulaci (#4409).<\/li>\n\n\n<li><code>parseXML<\/code> reportuje browser chyby (#4784).<\/li>\n\n\n<li><code>jQuery.isXMLDoc<\/code> akceptuje i falsy input (#4782).<\/li>\n\n\n<li>Ofici\u00e1ln\u00ed drop Edge Legacy podpory (#4568) a dal\u0161\u00ed zjednodu\u0161en\u00ed po z\u00fa\u017een\u00ed browser supportu.<\/li>\n\n\n<li>Pou\u017eit\u00ed <code>Array.prototype.flat<\/code> tam, kde je podporovan\u00e9 (#4320).<\/li>\n\n\n<li>Odstran\u011bn\u00ed priv\u00e1tn\u00edch kopi\u00ed <code>push<\/code>, <code>sort<\/code>, <code>splice<\/code> z prototypu (souvis\u00ed s breaking change v\u00fd\u0161e).<\/li>\n\n\n<li>Nov\u00e9 chainable metody <code>.even()<\/code> a <code>.odd()<\/code> jako n\u00e1hrada za pozi\u010dn\u00ed selektory <code>:even<\/code> a <code>:odd<\/code>.<\/li>\n\n\n<li>V r\u00e1mci p\u0159echodu na 4.0 prob\u011bhla migrace z AMD na ES modules (a odd\u011blen\u00e9 testov\u00e1n\u00ed).<\/li>\n\n\n<li>Drop IE-specific support test\u016f a spoleh na <code>document.documentMode<\/code> (#4386).<\/li>\n\n\n<li>Celkov\u00fd drop IE<11, iOS<11, Firefox<65, Android Browser &#038; PhantomJS (#3950, #4299).<\/li>\n\n\n<li>Odstran\u011bn\u00ed deprecated jQuery API (#4056).<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Eventy<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>beforeunload<\/code> pou\u017e\u00edv\u00e1 <code>.preventDefault()<\/code>.<\/li>\n\n\n<li>Zv\u00fd\u0161en\u00ed robustnosti v <code>leverageNative<\/code> (v\u010detn\u011b zjednodu\u0161en\u00ed a prevence duplicit).<\/li>\n\n\n<li><code>trigger(focus\/blur\/click)<\/code> l\u00e9pe spolupracuje s nativn\u00edmi handlery (#5015).<\/li>\n\n\n<li>Zm\u011bny kolem focus\/blur: simulace v IE p\u0159es focusin\/focusout (#4856, #4859, #4950) a hlavn\u011b p\u0159echod na nativn\u00ed po\u0159ad\u00ed podle W3C (breaking change popsan\u00fd v\u00fd\u0161e).<\/li>\n\n\n<li>Odstran\u011bn\u00ed shim pro <code>event.which<\/code> (#3235).<\/li>\n\n\n<li>Odstran\u011bn\u00ed <code>jQuery.event.global<\/code>.<\/li>\n\n\n<li>Eventy se attachuj\u00ed jen na objekty, kter\u00e9 re\u00e1ln\u011b akceptuj\u00ed data (#4397).<\/li>\n\n\n<li>Ukon\u010den\u00ed shimov\u00e1n\u00ed focusin &#038; focusout event\u016f (#4300).<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Selector<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Odstran\u011bn\u00ed workaroundu pro <code>:has<\/code> (testy na iPhone i iPad).<\/li>\n\n\n<li>Spr\u00e1vn\u00e9 deprecate <code>jQuery.expr[&quot;:&quot;]<\/code> \/ <code>jQuery.expr.filters<\/code>.<\/li>\n\n\n<li>Re-expose \u010d\u00e1sti jQuery.find API: <code>{tokenize, select, compile, setDocument}<\/code> (#5259).<\/li>\n\n\n<li>Zm\u011bny v implementaci kolem <code>CSS.supports(&quot;selector(...)&quot;)<\/code> (#5194) a pr\u00e1ce se selection contextem (#5185).<\/li>\n\n\n<li><code>uniqueSort<\/code> je nov\u011b chainable metoda (#5166).<\/li>\n\n\n<li>Re-introduce <code>selector-native.js<\/code>.<\/li>\n\n\n<li>Podpora <code>:scope<\/code> pseudo-class tam, kde to jde (#4453).<\/li>\n\n\n<li>Inline Sizzle do selector modulu a port Sizzle test\u016f p\u0159\u00edmo do jQuery.<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Effects<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Odstran\u011bn\u00ed <code>jQuery.fx.interval<\/code> (souvis\u00ed i s odstran\u011bn\u00edm deprecated API).<\/li>\n\n\n<li>Drobn\u00e9 opravy v <code>.stop()<\/code> (#4374).<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Release atmosf\u00e9ra: 20 let jQuery a setk\u00e1n\u00ed t\u00fdmu<\/h2>\n\n\n\n<p>K 20. v\u00fdro\u010d\u00ed se \u010d\u00e1st lid\u00ed z komunity a t\u00fdmu se\u0161la na reunionu v Dallasu a John Resig se p\u0159ipojil aspo\u0148 p\u0159es Zoom. Samotn\u00fd release post vznikal v dob\u011b, kdy byli spole\u010dn\u011b.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1804\" height=\"1359\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/11\/2026\/01\/jquery-reunion-group-edited.jpeg\" alt=\"Skupinov\u00e1 fotka reunionu komunity a t\u00fdmu jQuery v Dallasu (20. v\u00fdro\u010d\u00ed)\" class=\"wp-image-127\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/11\/2026\/01\/jquery-reunion-group-edited.jpeg 1804w, https:\/\/helloblog.io\/app\/uploads\/sites\/11\/2026\/01\/jquery-reunion-group-edited-300x226.jpeg 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/11\/2026\/01\/jquery-reunion-group-edited-1024x771.jpeg 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/11\/2026\/01\/jquery-reunion-group-edited-768x579.jpeg 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/11\/2026\/01\/jquery-reunion-group-edited-1536x1157.jpeg 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/11\/2026\/01\/jquery-reunion-group-edited-400x301.jpeg 400w\" sizes=\"auto, (max-width: 1804px) 100vw, 1804px\" \/><figcaption class=\"wp-element-caption\">\/ Foto z release postu k jQuery 4.0.0. \u2014 <em>Forr\u00e1s: Official jQuery Blog<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Shrnut\u00ed: co si odn\u00e9st, pokud maintenuje\u0161 star\u0161\u00ed frontendy<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>jQuery 4.0.0 je velk\u00fd \u00faklid: pry\u010d deprecated API a legacy k\u00f3d pro hodn\u011b star\u00e9 prohl\u00ed\u017ee\u010de.<\/li>\n\n\n<li>Konec podpory IE<11 je realita; IE11 m\u00e1 b\u00fdt \u0159e\u0161en\u00fd a\u017e dal\u0161\u00edm major krokem (jQuery 5.0).<\/li>\n\n\n<li>Bezpe\u010dnostn\u011b d\u016fle\u017eit\u00e9: Trusted Types + \u00fapravy script transportu kv\u016fli CSP.<\/li>\n\n\n<li>Intern\u011b velk\u00e1 zm\u011bna: p\u0159echod zdroj\u00e1k\u016f na ES modules, balen\u00ed p\u0159es Rollup.<\/li>\n\n\n<li>Pozor na breaking zm\u011bnu v po\u0159ad\u00ed focus\/blur event\u016f (W3C order).<\/li>\n\n\n<li>Slim build je men\u0161\u00ed a bez Deferreds\/Callbacks; pro IE11 rad\u011bji full build nebo polyfill na Promise.<\/li>\n\n\n<li>P\u0159ed upgradem pou\u017eij upgrade guide a jQuery Migrate plugin; p\u0159\u00edpadn\u00e9 probl\u00e9my hl\u00e1sit na GitHub issues.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ Zdroje<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/blog.jquery.com\/2026\/01\/17\/jquery-4-0-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery 4.0.0<\/a><\/li><li><a href=\"https:\/\/jquery.com\/upgrade-guide\/4.0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery Upgrade Guide 4.0<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery-migrate\/\" target=\"_blank\" rel=\"noopener noreferrer\">jquery\/jquery-migrate<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1...4.0.0\" target=\"_blank\" rel=\"noopener noreferrer\">Full changelog: 4.0.0<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/5077\" target=\"_blank\" rel=\"noopener noreferrer\">Support for IE&lt;11 removed (planned staged removal, next in 5.0)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4763\" target=\"_blank\" rel=\"noopener noreferrer\">Switch most asynchronous script requests to use &lt;script&gt; tags<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4541\" target=\"_blank\" rel=\"noopener noreferrer\">Migrate jQuery source from AMD to ES modules<\/a><\/li><li><a href=\"https:\/\/rollupjs.org\/introduction\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rollup Introduction<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/docs\/whyamd.html\" target=\"_blank\" rel=\"noopener noreferrer\">AMD &#8211; Why AMD? (RequireJS docs)<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">RequireJS<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML\" target=\"_blank\" rel=\"noopener noreferrer\">TrustedHTML (MDN)<\/a><\/li><li><a href=\"https:\/\/twitter.com\/kkotowicz\/status\/1445713282128515074\" target=\"_blank\" rel=\"noopener noreferrer\">Trusted Types reference (tweet)<\/a><\/li><li><a href=\"https:\/\/promisesaplus.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Promises\/A+<\/a><\/li><li><a href=\"https:\/\/jquery.com\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery Download<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery issues<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Po dlouh\u00e9m v\u00fdvoji dorazilo fin\u00e1ln\u00ed jQuery 4.0.0 \u2013 modernizace zdroj\u00e1k\u016f, lep\u0161\u00ed kompatibilita s CSP, osekan\u00e9 legacy a p\u00e1r zm\u011bn, kter\u00e9 um\u00ed p\u0159ekvapit p\u0159i upgradu.<\/p>\n","protected":false},"author":34,"featured_media":126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[95],"tags":[98,99,50,97,96],"class_list":["post-128","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programovaci-jazyky","tag-csp","tag-es-modules","tag-frontend","tag-javascript","tag-jquery"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts\/128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts\/128\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/media\/126"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/media?parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/categories?post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/tags?post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}