我有一個JS使用一些變量,這些變量來自OSGI或對話框。所以這些需要在我的任何JS之前加載,但推薦的cq:include標籤在這之前加載JS文件。任何聰明的想法?在使用cq包含外部JS之前,如何在JSP中包含全局JS變量?include?
<script>
var globalVar ="<%=someJspVar%>";
</script>
<cq:includeClientLib js="something.that.uses.globalVar" />
我有一個JS使用一些變量,這些變量來自OSGI或對話框。所以這些需要在我的任何JS之前加載,但推薦的cq:include標籤在這之前加載JS文件。任何聰明的想法?在使用cq包含外部JS之前,如何在JSP中包含全局JS變量?include?
<script>
var globalVar ="<%=someJspVar%>";
</script>
<cq:includeClientLib js="something.that.uses.globalVar" />
您需要使用AEM的dependencies
功能。您可以將全局js指定爲組件js的依賴項。這意味着AEM將在生成的html中的組件js之前包含全局js。
你可以在Adobe documentation找到更多的信息。
使用客戶端庫依賴關係是一個不錯的選擇,但是如果您的全局JavaScript不在庫中,而是像在您的示例中那樣動態呈現,則此選項可能無法爲您工作。在這種情況下,我建議你使得取決於全局變量的代碼在ready
事件中。這樣它就不會觸發並開始取決於這些全局變量的處理,直到所有內容都存在並準備好使用。
例子:
$(function() {
// Code in your client library that depends on a variable with global scope
});
對jQuery的ready事件選項的詳細信息,請參閱https://api.jquery.com/ready/。
但是如果全局JS變量有一個JSP值「<%=jspVar%>」?我無法將它們包含在外部腳本中,因此我無法將它們包含在依賴項中。 –