template::head::add_script (public)
template::head::add_script [ -async ] [ -charset charset ] \ [ -crossorigin crossorigin ] [ -defer ] [ -integrity integrity ] \ [ -order order ] [ -script script ] [ -src src ] [ -type type ]
Defined in packages/acs-templating/tcl/head-procs.tcl
Add a script to the head section of the document to be returned to the users client. A script library in an external file may only be included once; subsequent calls to add_script will replace the existing entry. Anonymous script blocks will be added without checking for duplicates; the caller must ensure that anonymous script blocks are not inadvertently added multiple times. You must supply either src or script.
- Switches:
- -async (optional, boolean)
- whether execution of the script should be executed asynchronously as soon as it is available
- -charset (optional)
- the charset attribute of the script tag, i.e. the character set of the script if it differs from the main document
- -crossorigin (optional)
- Enumerated attribute to indicate whether CORS (Cross-Origin Resource Sharing) should be used
- -defer (optional, boolean)
- whether execution of the script should be deferred until after the page has been loaded
- -integrity (optional)
- provide hash values for W3C Subresource Integrity recommendation
- -order (optional, defaults to
"0"
)- specify inclusion order
- -script (optional)
- the inline script for the body of the script tag. This parameter will be ignored if a value has been supplied for src
- -src (optional)
- the src attribute of the script tag, i.e. the source url of the script
- -type (optional, defaults to
"text/javascript"
)- the type attribute of the script tag, e.g. 'text/javascript'
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Source code: if {$defer_p} { set defer defer } else { set defer "" } if {$async_p} { set async async } else { set async "" } # # Replace potential URN in src with resolved value # set key ::template::head::urn($src) if {[info exists $key]} { template::head::require_csp $::template::head::urn_csp($src) set src [set $key] } elseif {[string match urn:* $src]} { ns_log error "URN <$src> could not be resolved" } if {$src eq ""} { if {$script eq ""} { error "You must supply either -src or -script." } # # For the time being, not all browsers support # nonces. According to the specs the added 'unsafe-inline', # is ignored on browsers supporting nonces. # # We could restrict setting of unsafe-inline to certain # browsers by checking the user agent. # security::csp::require script-src 'unsafe-inline' #security::csp::require script-src 'strict-dynamic' lappend ::template::head::scripts(anonymous) $type "" $charset $defer $async $script $order $crossorigin $integrity } else { set ::template::head::scripts($src) [list $type $src $charset $defer $async "" $order $crossorigin $integrity] }XQL Not present: Generic, PostgreSQL, Oracle