我正在开发Chrome应用程序,它会与某些硬件对话并向用户显示一些信息。我希望它有两个窗口,一些控制它们的z顺序。
主要的(我称之为“主”窗口)始终是打开的,尽管它可以最小化。它相当大(笔记本电脑的左半部分到中型桌面屏幕),并显示一些相当技术性的信息(这在这里并不重要)。
用户可以按下按钮并打开另一个小窗口(“仪表”窗口),该窗口很小(大约100px×100px)并将信息归结为“do stuff”按钮,以及一个范围的仪表从0到100。
我想要的是仪表窗口始终位于主窗口的顶部。对于z顺序,这是我想要从仪表窗口中唯一的特殊行为。
我不想要的是仪表窗口总是在所有东西之上。这就是我使用Chrome alwaysOnTop
所获得的。
Here的另一个问题几乎与我的问题相同但在不同的框架(Adobe AIR)中实际上并没有那么相似。但它确实给了我一个想法,使得仪表窗口最顶部,当且仅当没有其他窗口覆盖任一窗口时。这可能不会像我想要的那样完全,但它会很接近(r)。
不幸的是,这需要我尝试了解系统中所有其他窗口的相当干扰,而且我还没有意识到这样做的方法。
答案 0 :(得分:0)
您可以通过聆听主窗口的onBoundsChanged
,然后再打开alwaysOnTop
开启仪表窗口然后再关闭来进行伪造。
firstWindow.onBoundsChanged.addListener(function() {
secondWindow.setAlwaysOnTop(true);
secondWindow.setAlwaysOnTop(false);
});
这不是一个完美的解决方案,可能不适用于所有环境。另一种方法是执行类似windows示例的操作,这会强制第二个窗口停留在第一个窗口的右侧。
firstWindow.onBoundsChanged.addListener(function() {
var bounds = firstWindow.outerBounds;
secondWindow.outerBounds.left = bounds.left + bounds.width + 5;
});