【问题标题】:Extjs 6 - Can't make alwaysOnTop work correctlyExtjs 6 - 无法使 alwaysOnTop 正常工作
【发布时间】:2018-01-26 16:12:34
【问题描述】:

组件或窗口的“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 并让其他窗口按预期运行的正确方法是什么?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,我查看了该链接和它的信息。虽然它没有解决我的问题,但至少让我朝着正确的方向思考。
    【解决方案2】:

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

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

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

    这将阻止相关窗口在堆栈中向上移动。 删除 alwaysOnTop 比较似乎解决了我的问题。当在您的组件上执行 setActiveCounter 时,将触发一个调用,以重新收集并放置在堆栈顶部设置了“alwaysOnTop”的窗口,然后是有问题的窗口。

    这样做的结果是桌面底部的任务栏将始终保持在顶部,并且您的浮动窗口升级/降级将正常运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 2019-02-02
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      相关资源
      最近更新 更多