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

How do I include global JS variables in JSP, before I include external JS using cq:include?

本文关键字:JS JSP 包含全 变量 之前 cq include 包含外      更新时间:2023-09-26

我有一个JS,它使用一些变量,这些变量来自OSGI或对话框。因此,这些需要在我的任何JS之前加载,但推荐的cq:include标记在这些之前加载JS文件。有什么聪明的主意吗?

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

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

您可以在Adobe文档中找到更多信息。

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

示例:

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

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