{"id":8255,"date":"2026-01-12T22:24:50","date_gmt":"2026-01-13T03:24:50","guid":{"rendered":"https:\/\/frontendmasters.com\/blog\/?p=8255"},"modified":"2026-01-12T22:24:51","modified_gmt":"2026-01-13T03:24:51","slug":"document-currentscript-is-more-useful-than-i-thought","status":"publish","type":"post","link":"https:\/\/frontendmasters.com\/blog\/document-currentscript-is-more-useful-than-i-thought\/","title":{"rendered":"`document.currentScript` is more useful than I thought."},"content":{"rendered":"\n<p>Huh. Today I learned (<a href=\"https:\/\/macarthur.me\/posts\/current-script\/\">from Alex MacArthur<\/a>): you can access the current <code>&lt;script><\/code> element from a script (if it&#8217;s not <code>type=\"module\")<\/code> with <code>document.currentScript<\/code>. Meaning you can put configuration data as attributes on it and pluck them off and use them. <a href=\"https:\/\/codepen.io\/chriscoyier\/pen\/YPWpwRV\/03506f363d8ab851d8a80e9a7241de97?editors=1010\">Like<\/a>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"setMePlease\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span> <span class=\"hljs-attr\">data-some-value<\/span>=<span class=\"hljs-string\">\"foo\"<\/span>&gt;<\/span><span class=\"javascript\">\n  <span class=\"hljs-keyword\">const<\/span> scriptData = <span class=\"hljs-built_in\">document<\/span>.currentScript.dataset;\n  setMePlease.textContent = scriptData.someValue;\n<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"excerpt":{"rendered":"<p>Huh. Today I learned (from Alex MacArthur): you can access the current &lt;script> element from a script (if it&#8217;s not type=&#8221;module&#8221;) with document.currentScript. Meaning you can put configuration data as attributes on it and pluck them off and use them. Like:<\/p>\n","protected":false},"author":1,"featured_media":8257,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"sig_custom_text":"","sig_image_type":"featured-image","sig_custom_image":0,"sig_is_disabled":false,"inline_featured_image":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[29],"tags":[3],"class_list":["post-8255","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-the-beat","tag-javascript"],"acf":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2026\/01\/pexels-photo-5771010.jpeg?fit=1880%2C1253&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts\/8255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/comments?post=8255"}],"version-history":[{"count":1,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts\/8255\/revisions"}],"predecessor-version":[{"id":8256,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts\/8255\/revisions\/8256"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/media\/8257"}],"wp:attachment":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/media?parent=8255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/categories?post=8255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/tags?post=8255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}