Asset.script ViewHelper <f:asset.script> 

ViewHelper to add JavaScript to the TYPO3 AssetCollector. Either a file or inline JavaScript can be added.

Go to the source code of this ViewHelper: Asset\ScriptViewHelper.php (GitHub).

Examples 

packages/my_sitepackage/Resources/Private/Templates/Page/Default.fluid.html
<f:asset.script identifier="identifier123" src="EXT:my_sitepackage/Resources/Public/JavaScript/foo.js" />
<f:asset.script identifier="identifier987">
  alert('hello world');
</f:asset.script>
Copied!

Content security policy 

The csp argument controls whether TYPO3 adds the script to the content security policy of the page. TYPO3 then adds a hash of the script to the CSP header, and a nonce attribute to the tag if the page uses a nonce. If csp is not set, TYPO3 does this for a file in src, but not for an inline script:

packages/my_sitepackage/Resources/Private/Templates/Page/Default.fluid.html
<f:asset.script identifier="greeting" csp="1">
  console.log('Hello');
</f:asset.script>
Copied!

Changed in version 15.0 Breaking: #109783 - Deprecated functionality removed

The useNonce argument, deprecated since TYPO3 v14.2, has been removed. Use the csp argument instead:

 <f:asset.script identifier="main"
   src="EXT:my_sitepackage/Resources/Public/JavaScript/main.js"
-  useNonce="1" />
+  csp="1" />
Copied!

Details 

In the AssetCollector, the "identifier" attribute is used as a unique identifier. Thus, if assets are added multiple times using the same identifier, the asset will only be served once (the last added overrides previous assets).

Some available attributes are defaults but do not make sense for this ViewHelper. Relevant attributes specific for this ViewHelper are: async, crossorigin, defer, integrity, nomodule, nonce, referrerpolicy, type.

Using the "inline" argument, the file content of the referenced file is added as inline script.

Arguments of the <f:asset.script> ViewHelper 

additionalAttributes

additionalAttributes
Type
array
Additional tag attributes. They will be added directly to the resulting HTML tag.

aria

aria
Type
array
Additional aria-* attributes. They will each be added with a "aria-" prefix.

async

async
Type
bool
Define that the script will be fetched in parallel to parsing and evaluation.

csp

csp
Type
bool
Whether to collect a CSP hash value for this asset (default: true for external files, false for inline)

data

data
Type
array
Additional data-* attributes. They will each be added with a "data-" prefix.

defer

defer
Type
bool
Define that the script is meant to be executed after the document has been parsed.

identifier

identifier
Type
string
Required
1
Use this identifier within templates to only inject your JS once, even though it is added multiple times.

inline

inline
Type
bool
Default
false
Define whether or not the referenced file should be loaded as inline script (Only to be used if 'src' is set).

nomodule

nomodule
Type
bool
Define that the script should not be executed in browsers that support ES2015 modules.

priority

priority
Type
boolean
Default
false
Define whether the JavaScript should be put in the <head> tag above-the-fold or somewhere in the body part.

src

src
Type
string
The URI of the script to be loaded. If omitted, the tag children are added as inline JavaScript.