2016-05-13 4 views
1

У меня есть JS, который использует некоторые переменные, которые поступают либо из OSGI, либо из диалогов. Поэтому они должны быть загружены перед любым из моих JS, но рекомендуемый тег cq: include загружает файлы JS до этого. Какие-нибудь умные идеи?Как включить глобальные переменные JS в JSP, прежде чем включать внешние JS с помощью cq: include?

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

ответ

2

Вы должны использовать dependencies особенность AEM. Вы можете указать свой глобальный js как зависимость вашего компонента js. Это означает, что AEM будет включать глобальные js перед компонентом js в сгенерированном html.

Дополнительную информацию можно найти на странице Adobe documentation.

+0

Но что, если глобальные переменные JS имеют значение JSP '<%=jspVar%>'? Я не могу включить их во внешний скрипт, поэтому я не могу включить их в зависимость. –

2

Использование зависимостей клиентской библиотеки является хорошим вариантом, но если ваш глобальный JavaScript не находится в библиотеке, а вместо этого отображается динамически, как в вашем примере, этот параметр может не сработать для вас. В таком случае я рекомендую вам сделать код, который зависит от глобальных переменных, внутри события ready. Таким образом, он не будет запускаться и запускать обработку, которая зависит от этих глобальных переменных, пока все не будет присутствовать и не будет готово к использованию.

Пример:

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

https://api.jquery.com/ready/ Смотрите подробную информацию о готовых вариантов событий JQuery в.

+0

Включенный clientLib включает сторонние плагины JavaScript, я искал что-то, что не затрагивает их. –

+1

Тогда, возможно, «готовое» событие должно лениться загрузить клиентскую библиотеку, поэтому вы не изменяете какой-либо код, а просто загружаете его динамически. Вы можете использовать https://api.jquery.com/jquery.getscript/ для загрузки кода вашей клиентской библиотеки из «готовой» функции. – Shawn

+0

Согласен с комментарием @ Shawn. Из любопытства, почему сторонний JS-плагин зависит от переменной jsp-компонента? – Abhishek

Смежные вопросы