0

我正在尝试使用window.blur()打开一个不聚焦它的窗口(或者聚焦和不聚焦非常快,所以看起来它没有聚焦)。

但是好像不行,有没有其他办法?

我的尝试:

模糊测试.xul:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window width="400" height="300"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <script>
        <![CDATA[
            function onkeypress(event) {
                // for this sample don't matter which key is pressed
                open('second.xul','SecondWindow','chrome, width=400, height=300');
            }
            addEventListener("keypress", onkeypress, false);
        ]]>
    </script>

    <label value="MAIN WINDOW"/>

</window>

第二个.xul:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window width="400" height="300"
    onload="blur();"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <label value="SECOND" />

</window>

观察。我们可以考虑在打开第二个窗口后使用 setTimeout(window.focus, 1) 将焦点调回我的窗口。但我需要第二个窗口来处理焦点。完美的场景是,如果第二个窗口永远无法获得焦点,只需打开/恢复窗口而不获得焦点。

4

1 回答 1

1

您可以使用调用popup中的窗口功能打开一个 XUL 窗口,就像它是一个弹出窗口一样。openDialog这应该会打开一个不会窃取焦点的最顶层窗口。请注意,默认情况下,弹出窗口没有 OS chrome;在 Windows 上,您可以添加titlebar功能(它为您提供一个迷你标题栏,就像调色板窗口一样)和close按钮(与标题栏一起),但我不知道哪些功能标志在其他平台上有效。

桌面警报仍然在 Windows 上使用此功能,但我相信在 Linux 上他们现在使用 libnotify,在 Mac 上他们使用 Growl。

于 2011-02-10T20:38:22.433 回答