我正在处理此文档以删除阻止js:
然而,对于CQ5,我们通过以下方式包含js:
<cq:includeClientLib js="headlibs"/>
如何修改脚本标记,如:
<script async src="my.js">
所以我可以删除阻塞JS。
答案 0 :(得分:4)
cq:includeClientLib没有任何选项可以执行此操作。您可以尝试使用com.day.cq.widget.HtmlLibraryManager接口来获取JS文件的路径,标签是一个这个界面的便利包装器。
com.day.cq.widget.HtmlLibraryManager clientlibmanager = sling.getService(com.day.cq.widget.HtmlLibraryManager.class);
if(clientlibmanager != null)
{
String[] categoryArray = {"headlibs"};
java.util.Collection<com.day.cq.widget.ClientLibrary> libs = clientlibmanager.getLibraries(catArray,com.day.cq.widget.LibraryType.JS,false,false);
for(com.day.cq.widget.ClientLibrary lib : libs) {
out.write("<script async type=\"text/javascript\" src=\""+lib.getIncludePath(com.day.cq.widget.LibraryType.JS)+"\"></script>");
}
} else {
out.write("clientlib manager is null");
}
方法getIncludePath()
还需要一个额外的参数 minified (布尔值)来提供缩小文件的路径。