在 CQ/AEM 中,我可以阻止 Sidekick 显示吗?
In CQ/AEM, can I prevent Sidekick from showing?
在某些情况下,我想阻止 Sidekick 在页面上显示。我尝试了一些东西:
- 删除 init.jsp 包含。这有效,但它也阻止加载某些 CQ javascript 库,我需要这些库。
添加 jquery onload 事件以隐藏 sidekick。
$(function() {CQ.WCM.getSidekick().hide()});
这不起作用,因为 sidekick 尚未加载。
添加一个 jquery 带有超时的 onload 事件。
$(function() {
setTimeout(function() {
CQ.WCM.getSidekick().hide();
}, 1)
});
但这并不可靠。将超时设置得太低将有很高的失败机会。设置得太高会导致它出现然后消失,这是不可接受的。
请帮忙!
有多种方法可以实现这一点。
如果你想让sidekick在所有页面都不可用,只需要注释掉init.jsp
中可用的下面这段代码即可
CQ.WCM.launchSidekick("<%= xssAPI.getValidHref(currentPage.getPath()) %>", {
propsDialog: "<%= dlgPath == null ? "" : xssAPI.getValidHref(dlgPath) %>",
locked: <%= currentPage.isLocked() %>
});
如果您希望 sidekick 仅在特定条件下不可用,您可以监听 CQ.WCM class 触发的 sidekickready
事件,如下所示,然后隐藏助手。
CQ.Ext.onReady(function(){
var top = CQ.WCM.getTopWindow();
if (top.CQ.WCM.isSidekickReady()) {
top.CQ.WCM.getSidekick().hide();
} else {
top.CQ.WCM.on("sidekickready", function(sidekick) {
sidekick.hide();
});
}
});
编辑 - 解释冗长的代码
上面的脚本可以在任何组件中正常工作,而不仅仅是 init.jsp
。
CQ.Ext.onReady
是在DOM准备好后执行我们的代码。
CQ.WCM.getTopWindow()
获取最上面的 window。如果我们的脚本在 sidekick 准备好之后执行,那么 sidekickready
事件将已经被触发,因此我们的代码可能不会执行。
因此,我们首先使用 top.CQ.WCM.isSidekickReady()
检查 sidekick 是否可用,如果不可用,我们将侦听器附加到 sidekickready
事件,以便在可用时通知我们准备好了。
希望这对您有所帮助。
在某些情况下,我想阻止 Sidekick 在页面上显示。我尝试了一些东西:
- 删除 init.jsp 包含。这有效,但它也阻止加载某些 CQ javascript 库,我需要这些库。
添加 jquery onload 事件以隐藏 sidekick。
$(function() {CQ.WCM.getSidekick().hide()});
这不起作用,因为 sidekick 尚未加载。
添加一个 jquery 带有超时的 onload 事件。
$(function() { setTimeout(function() { CQ.WCM.getSidekick().hide(); }, 1) });
但这并不可靠。将超时设置得太低将有很高的失败机会。设置得太高会导致它出现然后消失,这是不可接受的。
请帮忙!
有多种方法可以实现这一点。
如果你想让sidekick在所有页面都不可用,只需要注释掉init.jsp
中可用的下面这段代码即可CQ.WCM.launchSidekick("<%= xssAPI.getValidHref(currentPage.getPath()) %>", {
propsDialog: "<%= dlgPath == null ? "" : xssAPI.getValidHref(dlgPath) %>",
locked: <%= currentPage.isLocked() %>
});
如果您希望 sidekick 仅在特定条件下不可用,您可以监听 CQ.WCM class 触发的 sidekickready
事件,如下所示,然后隐藏助手。
CQ.Ext.onReady(function(){
var top = CQ.WCM.getTopWindow();
if (top.CQ.WCM.isSidekickReady()) {
top.CQ.WCM.getSidekick().hide();
} else {
top.CQ.WCM.on("sidekickready", function(sidekick) {
sidekick.hide();
});
}
});
编辑 - 解释冗长的代码
上面的脚本可以在任何组件中正常工作,而不仅仅是 init.jsp
。
CQ.Ext.onReady
是在DOM准备好后执行我们的代码。
CQ.WCM.getTopWindow()
获取最上面的 window。如果我们的脚本在 sidekick 准备好之后执行,那么 sidekickready
事件将已经被触发,因此我们的代码可能不会执行。
因此,我们首先使用 top.CQ.WCM.isSidekickReady()
检查 sidekick 是否可用,如果不可用,我们将侦听器附加到 sidekickready
事件,以便在可用时通知我们准备好了。
希望这对您有所帮助。