2016-05-13 37 views

回答

2

您需要使用AEM的dependencies功能。您可以將全局js指定爲組件js的依賴項。這意味着AEM將在生成的html中的組件js之前包含全局js。

你可以在Adobe documentation找到更多的信息。

+0

但是如果全局JS變量有一個JSP值「<%=jspVar%>」?我無法將它們包含在外部腳本中,因此我無法將它們包含在依賴項中。 –

2

使用客戶端庫依賴關係是一個不錯的選擇,但是如果您的全局JavaScript不在庫中,而是像在您的示例中那樣動態呈現,則此選項可能無法爲您工作。在這種情況下,我建議你使得取決於全局變量的代碼在ready事件中。這樣它就不會觸發並開始取決於這些全局變量的處理,直到所有內容都存在並準備好使用。

例子:

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

對jQuery的ready事件選項的詳細信息,請參閱https://api.jquery.com/ready/

+0

包含的clientLib包含第三方JavaScript插件,我正在尋找不涉及觸摸它們的東西。 –

+1

然後,也許「就緒」事件應該延遲加載客戶端庫 - 所以你不要修改任何代碼,而只是動態加載它。您可以使用https://api.jquery.com/jquery.getscript/從「ready」函數中加載您的客戶端庫代碼。 – Shawn

+0

同意@ Shawn的評論。出於好奇,爲什麼第三方JS插件依賴於jsp組件的變量? – Abhishek