2

我需要在defer“位置”中声明外部 js。我认为这
<r:external uri="http://cdn.connect.mail.ru/js/loader.js" disposition="defer"/>会起作用,但它只是<script...在调用它的地方放置代码。

如何使用 taglib 在延迟位置声明外部 js?

Grails 2.0+,资源插件

4

1 回答 1

4

正如您所描述的,不幸的是 r:external 标记似乎不尊重 JavaScript 的默认配置,即“延迟”。此外,根据文档,r:external标记不提供“处置”属性来明确声明这一点。r:script
标记正确地 将脚本放置在正文的底部,但它不提供“src”属性,因为它仅用于“内联”JavaScript。

我认为解决这个缺失功能​​的最好方法是在 ApplicationResources.groovy 文件中定义一个资源模块

modules = {
    ...
    mail_loader {
        resource url: "http://cdn.connect.mail.ru/js/loader.js"
    }
    ...

然后使用您的 TagLib 要求它。

out << r.require(module: "mail_loader")

如前所述,JavaScript 资源的默认配置是“延迟”,因此您无需在您的案例中显式定义配置。

于 2012-12-25T23:14:08.747 回答