AEM 6.1缺少CQ javascript功能

时间:2016-11-01 15:05:52

标签: jquery aem

我收到以下错误:

VM13430 editor.js:25678Uncaught TypeError: Cannot read property 'shared' of undefined

在Granite UI中的AEM 6.1中以作者模式加载页面时。它在以下行失败:

var isLockOwner = true;
    if(info.status.isLocked){
        isLockOwner = ns.ContentFrame && ns.ContentFrame.contentWindow.CQ.shared.User.data.userID === info.status.lockOwner;
    }

在调试ns.ContentFrame.contentWindow.CQ时,缺少'CQ'。 在检查Geometrixx演示内容时,'CQ'是一个函数,我假设是jQuery的jQuery解析。

因此,如果锁定,我无法解锁页面。虽然我可以在页面网格视图中解锁页面。

如何确保我可以为'ns.ContentFrame.contentWindow'加载CQ?

2 个答案:

答案 0 :(得分:1)

在clientlibs目录的.content.xml中添加以下内容:

embed="[underscore,granite.shared,cq.shared,jquery.jcarousel,cq.foundation,cq.foundation-main,jquery-ui,cq.jquery.ui,personalization,personalization.core,personalization.core.kernel,personalization.clientcontext.kernel,personalization.stores.kernel,personalization.kernel,personalization.clientcontext,personalization.stores,cq.social.tagging,cq.ckeditor,cq.social.scf,cq.social.author.hbs.message,cq.social.author.hbs.messagebox,cq.social.author.hbs.composemessage,cq.social.author.hbs.userchooser,cq.social.author.hbs.comments,cq.social.author.hbs.forum,cq.social.author.hbs.journal,cq.social.author.hbs.rating,cq.social.author.hbs.qna,cq.social.author.hbs.voting,cq.social.author.hbs.reviews,cq.social.author.hbs.search,cq.social.author.hbs.calendar,cq.social.hbs.socialgraph,cq.social.calendar,cq.social.calendar.eventbasics,cq.social.calendar.fullcalendar,cq.social.author.hbs.socialgraph.following,cq.social.author.hbs.activitystreams,cq.social.commons.infiniscroll]"

答案 1 :(得分:0)

基本上,这里的问题是您需要包含一个clientLib-cq.shared

根据Adobe的说法: ”   编辑器客户端库假定存在cq.shared命名空间   在内容页面中,如果没有,则出现JavaScript错误Uncaught   TypeError:无法读取未定义的属性“ shared”。

所有示例内容页面都包含cq.shared,因此基于它们的任何内容都会自动包含cq.shared。但是,如果您决定从头开始创建自己的内容页面而不将其基于示例内容,则必须确保包括cq.shared命名空间。 “

由于某种原因,嵌入对我不起作用,但是从基本html调用clientLib似乎可行

<sly data-sly-use.clientlib="granite/sightly/templates/clientlib.html" />
<sly data-sly-call="${clientlib.js @ categories='cq.shared'}"/>