gpt4 book ai didi

javascript - 在 CQ/AEM 中,我可以阻止 Sidekick 显示吗?

转载 作者:行者123 更新时间:2023-11-29 10:40:33 25 4
gpt4 key购买 nike

在某些情况下,我想阻止 Sidekick 在页面上显示。我尝试了一些事情:

  • 删除 init.jsp 包含。这可行,但它也会阻止加载某些 CQ javascript 库,而我需要这些库。
  • 添加一个 jquery onload 事件来隐藏 sidekick。

    $(function() {CQ.WCM.getSidekick().hide()});

    这不起作用,因为 sidekick 尚未加载。

  • 添加一个带有超时的 jquery onload 事件。

    $(function() {
    setTimeout(function() {
    CQ.WCM.getSidekick().hide();
    }, 1)
    });

    但这并不可靠。将超时设置得太低将有很高的失败机会。设置得太高会导致它出现然后消失,这是 Not Acceptable 。

请帮忙!

最佳答案

有多种方法可以实现这一点。

如果想让sidekick在所有页面都不可用,只需要在init.jsp中注释掉下面这段可用的代码即可

CQ.WCM.launchSidekick("<%= xssAPI.getValidHref(currentPage.getPath()) %>", {
propsDialog: "<%= dlgPath == null ? "" : xssAPI.getValidHref(dlgPath) %>",
locked: <%= currentPage.isLocked() %>
});

如果您希望 sidekick 仅在特定条件下不可用,您可以监听 CQ.WCM 触发的 sidekickready 事件类如下所示,然后隐藏 sidekick。

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() 获取最顶部的窗口。如果我们的脚本在 sidekick 准备好之后执行,那么 sidekickready 事件将已经被触发,因此我们的代码可能不会执行。

因此,我们首先使用 top.CQ.WCM.isSidekickReady() 检查 sidekick 是否可用,如果不可用,我们将监听器附加到 sidekickready 事件,以便我们在准备就绪时收到通知。

希望这对您有所帮助。

关于javascript - 在 CQ/AEM 中,我可以阻止 Sidekick 显示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com