在使用cq:include包含外部JS之前,如何在JSP中包含全局JS变量?

时间:2016-05-13 21:59:58

标签: javascript jsp cq5 aem

我有一个使用一些变量的JS,这些变量来自OSGI或对话框。所以这些需要在我的任何JS之前加载,但推荐的cq:include标签在这些之前加载JS文件。任何聪明的想法?

<script> 
var globalVar ="<%=someJspVar%>";
</script>
<cq:includeClientLib js="something.that.uses.globalVar" />

2 个答案:

答案 0 :(得分:2)

您需要使用AEM的dependencies功能。您可以将全局js指定为组件js的依赖项。这意味着AEM将在生成的html中包含组件js之前的全局js。

您可以在Adobe documentation

中找到更多信息

答案 1 :(得分:2)

使用客户端库依赖项是一个不错的选择,但是如果您的全局JavaScript不在库中,而是像示例中那样动态呈现,则此选项可能对您不起作用。在这种情况下,我建议您将依赖于全局变量的代码放在ready事件中。这样它就不会触发并开始依赖这些全局变量的处理,直到所有内容都存在并准备好使用。

示例:

$(function() {
  // Code in your client library that depends on a variable with global scope
});

有关jQuery的ready事件选项的详细信息,请参阅https://api.jquery.com/ready/