我有一个使用一些变量的JS,这些变量来自OSGI或对话框。所以这些需要在我的任何JS之前加载,但推荐的cq:include标签在这些之前加载JS文件。任何聪明的想法?
<script>
var globalVar ="<%=someJspVar%>";
</script>
<cq:includeClientLib js="something.that.uses.globalVar" />
答案 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/。