Extjs 6 - 无法使alwaysOnTop正常工作

时间:2018-01-26 16:12:35

标签: javascript extjs extjs6 window-managers always-on-top

组件或窗口的“alwaysOnTop”属性的正确方法是什么?

如果我定义一个窗口 - 比如一个工具栏 - 并设置alwaysOnTop: true,那么不应该阻止其他窗口遮挡它吗?

具有此属性的窗口是否需要使用Ext.WindowManager注册?

很长一段时间,我正在使用桌面代码(请参阅此处:https://examples.sencha.com/extjs/6....top/index.html)。您会注意到您可以将窗口移动到底部工具栏上 - 这不应该发生。 仅将alwaysOnTop: true添加到该任务栏代码没有任何效果,但随后执行此操作:

Ext.WindowManager.register(taskbar)

问题是win.toFront()似乎不再适用于桌面上的其他窗口。这样,如果窗口A与窗口B重叠,B.toFront()将无效。

所以,问题是,对于特定项目使用alwaysOnTop的正确方法是什么,但其他窗口的行为与预期一致?

2 个答案:

答案 0 :(得分:0)

您检查过以下链接吗?我认为我们必须应用这样的其他方法来实现输出。 Always on top

答案 1 :(得分:0)

好的,所以你仍然需要注册你想要的窗户' alwaysOnTop' 但事实证明,窗口不会出现在前面的原因是如果有任何窗口已注册为" alwaysOnTop" ZIndexManager将不会提升窗口。

函数bringToTop()包含以下代码:

if (!comp || zIndexStack.find('alwaysOnTop', true)){
    return false;
}

这将使有问题的窗口不会在堆栈中向上移动。 删除alwaysOnTop比较似乎解决了我的问题。当你的组件上执行setActiveCounter时,它会触发一个求助集合的调用,并将窗口置于具有' alwaysOnTop"设置在堆栈的顶部,然后是相关的那个。

这样做的结果是桌面底部的任务栏将始终位于顶部,您的浮动窗口升级/降级将按照应有的方式运行。