Get to know MDN better
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
HTML <script> elements expose the HTMLScriptElement interface, which provides special properties and methods for manipulating the behavior and execution of <script> elements (beyond the inherited HTMLElement interface).
JavaScript files should be served with the text/javascript MIME type, but browsers are lenient and block them only if the script is served with an image type (image/*), video type (video/*), audio type (audio/*), or text/csv. If the script is blocked, its element receives an error event; otherwise, it receives a load event.
Note: When inserted using the Document.write() method, <script> elements execute (typically synchronously), but when inserted using Element.innerHTML or Element.outerHTML, they do not execute at all.
Inherits properties from its parent, HTMLElement.
HTMLScriptElement.attributionSrc Secure contextGets and sets the attributionsrc attribute on a <script> element programmatically, reflecting the value of that attribute. attributionsrc specifies that you want the browser to send an Attribution-Reporting-Eligible header along with the script resource request. On the server-side this is used to trigger sending an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header in the response, to register a JavaScript-based attribution source or attribution trigger, respectively.
HTMLScriptElement.asyncA boolean value that controls how the script should be executed. For classic scripts, if the async property is set to true, the external script will be fetched in parallel to parsing and evaluated as soon as it is available. For module scripts, if the async property is set to true, the script and all their dependencies will be fetched in parallel to parsing and evaluated as soon as they are available.
HTMLScriptElement.blockingA string indicating that certain operations should be blocked on the fetching of the script. It reflects the blocking attribute of the <script> element.
HTMLScriptElement.charsetA string representing the character encoding of an external script. It reflects the charset attribute.
HTMLScriptElement.crossOriginA string reflecting the CORS setting for the script element. For classic scripts from other origins, this controls if error information will be exposed.
HTMLScriptElement.deferA boolean value that controls how the script should be executed. For classic scripts, if the defer property is set to true, the external script will be executed after the document has been parsed, but before firing DOMContentLoaded event. For module scripts, the defer property has no effect.
HTMLScriptElement.eventA string; an obsolete way of registering event handlers on elements in an HTML document.
HTMLScriptElement.fetchPriorityAn optional string representing a hint given to the browser on how it should prioritize fetching of an external script relative to other external scripts. If this value is provided, it must be one of the possible permitted values: high to fetch at a high priority, low to fetch at a low priority, or auto to indicate no preference (which is the default). It reflects the fetchpriority attribute of the <script> element.
HTMLScriptElement.innerTextA property that represents the inline text content of the <script> element as though it were rendered text. The property accepts either a TrustedScript object or a string.
HTMLScriptElement.integrityA string that contains inline metadata that a browser can use to verify that a fetched resource has been delivered without unexpected manipulation. It reflects the integrity attribute of the <script> element.
HTMLScriptElement.noModuleA boolean value that if true, stops the script's execution in browsers that support ES modules — used to run fallback scripts in older browsers that do not support JavaScript modules.
HTMLScriptElement.referrerPolicyA string that reflects the referrerPolicy HTML attribute indicating which referrer to use when fetching the script, and fetches done by that script.
HTMLScriptElement.srcA TrustedScriptURL or string representing the URL of an external script; this can be used as an alternative to embedding a script directly within a document. It reflects the src attribute of the <script> element.
HTMLScriptElement.textA property that represents the inline text content of the <script> element. The property accepts either a TrustedScript object or a string. It acts the same way as the textContent property.
HTMLScriptElement.textContentA property that represents the inline text content of the <script> element. The property is redefined from Node to support TrustedScript as an input. On this element it behaves exactly like the text property.
HTMLScriptElement.typeA string representing the type of the script. It reflects the type attribute of the <script> element.
Returns true if the browser supports scripts of the specified type and false otherwise. This method provides a simple and unified method for script-related feature detection.
No specific methods; inherits methods from its parent, HTMLElement.
No specific events; inherits events from its parent, HTMLElement.
Let's create a function that imports new scripts within a document creating a <script> node immediately before the <script> that hosts the following code (through document.currentScript). These scripts will be asynchronously executed. For more details, see the defer and async properties.
This next function, instead of prepending the new scripts immediately before the document.currentScript element, appends them as children of the <head> tag.
Sample usage:
HTMLScriptElement.supports() provides a unified mechanism for checking whether a browser supports particular types of scripts.
The example below shows how to check for module support, using the existence of the noModule attribute as a fallback.
Classic scripts are assumed to be supported on all browsers.
| HTML # htmlscriptelement |
Enable JavaScript to view this browser compatibility table.
This page was last modified on May 9, 2026 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.