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
(boolean) (optional)
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
(boolean) (optional)
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
(defaults to "0") (optional)
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
(defaults to "text/javascript") (optional)
the type attribute of the script tag, e.g. 'text/javascript'

Partial Call Graph (max 5 caller/called nodes):
%3 packages/forums/www/message-view.tcl packages/forums/ www/message-view.tcl template::head::add_script template::head::add_script packages/forums/www/message-view.tcl->template::head::add_script packages/forums/www/moderate/message-delete.tcl packages/forums/ www/moderate/message-delete.tcl packages/forums/www/moderate/message-delete.tcl->template::head::add_script template::add_script template::add_script (public) template::add_script->template::head::add_script template::head::add_javascript template::head::add_javascript (public) template::head::add_javascript->template::head::add_script xo::Page proc header_stuff xo::Page proc header_stuff xo::Page proc header_stuff->template::head::add_script security::csp::require security::csp::require (public) template::head::add_script->security::csp::require template::head::require_csp template::head::require_csp (private) template::head::add_script->template::head::require_csp

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
[ hide source ] | [ make this the default ]
Show another procedure: