javascript
用途
允许引用 javascript 标签库和使用 scripts 脚本:
示例
// actually imports '/app/js/myscript.js'
<g:javascript src="myscript.js" />// imports all the necessary js for the scriptaculous library
<g:javascript library="scriptaculous" /><g:javascript>alert('hello')</g:javascript>
描述
属性
-
library
(可选) - 包含标签库的名称.只能在"prototype", "scriptaculous", "yahoo" 或 "dojo"选其一.
-
src
(可选) - 想要引用javascript 文件的名称.这些文件放在 /app/js 目录下.
-
base
(可选 - Since 0.6) - 指定基础的url,可以预先试用这个库的名称.
Source
Show Source
def javascript = { attrs, body ->
setUpRequestAttributes();
def requestPluginContext = request[CONTROLLER]?.pluginContextPath
if(attrs.src) {
javascriptInclude(attrs)
}
else if(attrs.library) { if(LIBRARY_MAPPINGS.containsKey(attrs.library)) {
if(!request[INCLUDED_LIBRARIES].contains(attrs.library)) {
LIBRARY_MAPPINGS[attrs.library].each {
if(!request[INCLUDED_JS].contains(it)) {
request[INCLUDED_JS] << it
def newattrs = [:] + attrs
newattrs.src = it+'.js'
javascriptInclude(newattrs)
}
}
request[INCLUDED_LIBRARIES] << attrs.library
}
}
else {
if(!request[INCLUDED_LIBRARIES].contains(attrs.library)) {
def newattrs = [:] + attrs
newattrs.src = newattrs.remove('library')+'.js'
javascriptInclude(newattrs)
request[INCLUDED_LIBRARIES] << attrs.library
request[INCLUDED_JS] << attrs.library
}
}
}
else {
out.println '<script type="text/javascript">'
out.println body()
out.println '</script>'
}
} private javascriptInclude(attrs) {
def requestPluginContext = request[CONTROLLER]?.pluginContextPath
out << '<script type="text/javascript" src="'
if (!attrs.base) {
def baseUri = grailsAttributes.getApplicationUri(request)
out << baseUri
out << (baseUri.endsWith('/') ? '' : '/')
if (requestPluginContext) {
out << (requestPluginContext.startsWith("/") ? requestPluginContext.substring(1) : requestPluginContext)
out << "/"
}
out << 'js/'
} else {
out << attrs.base
}
out << attrs.src
out.println '"></script>'
}