CQ5删除渲染阻止JavaScript

时间:2014-11-28 08:05:27

标签: java javascript css adobe cq5

我正在处理此文档以删除阻止js:

Remove Blocking JS

然而,对于CQ5,我们通过以下方式包含js:

<cq:includeClientLib js="headlibs"/>

如何修改脚本标记,如:

<script async src="my.js">

所以我可以删除阻塞JS。

1 个答案:

答案 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 (布尔值)来提供缩小文件的路径。