Xul's window.blur () не работает?Есть ли альтернатива? - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь использовать window.blur () , чтобы открыть окно без его фокусировки (или очень быстро сфокусировать и расфокусировать, поэтому похоже, что оно не сфокусировано).

Но похоже, что это не работает, есть ли альтернатива?

Моя попытка:

blurTest.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>

Obs. Мы можем подумать об использовании setTimeout (window.focus, 1) для вызова фокуса обратно в мое окно после открытия второго окна.Но мне нужно второе окно, чтобы справиться с фокусом.Идеальный сценарий был бы, если бы второе окно никогда не могло получить фокус, просто откройте / восстановите окно без получения фокуса.

1 Ответ

1 голос
/ 10 февраля 2011

Вы можете открыть окно XUL, как если бы это было всплывающее окно, используя функцию окна popup в вызове openDialog.Это должно открыть самое верхнее окно, которое не крадет фокус.Обратите внимание, что по умолчанию всплывающее окно не имеет Chrome ОС;в Windows вы можете добавить функцию titlebar (которая дает мини-строку заголовка, как для окна палитры) и кнопку close (вместе со строкой заголовка), но я не знаю, над какими флагами функции работаютдругие платформы.

Настольные оповещения все еще используют эту функцию в Windows, но я считаю, что в Linux они теперь используют libnotify, а на Mac - Growl.

...