2011-02-09 5 views
0

Я пытаюсь использовать window.blur(), чтобы открыть окно без фокуса (фокус и нефокус очень быстро, поэтому похоже, что он не фокусировался).Xul's 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> 

second.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), чтобы вызвать фокус обратно в мое окно после открытия второго окна. Но мне нужно второе окно, чтобы справиться с фокусом. Идеальный сценарий был бы, если бы второе окно не смогло получить фокус, просто откройте/восстановите окно без фокуса.

+0

Насколько я знаю, обычные окна всегда активируются, когда они отображаются, только всплывающие окна (меню, выпадающие списки, предупреждения и т. Д.) Этого не делают. – Neil

+0

@Neil Да, они делают, и я хочу показать информацию в новом окне перед любым другим окном (так что другой вопрос о всегда сверху), и я хочу, чтобы это новое информационное окно не получало фокуса, поэтому пользователь может продолжить, например, ввод текста в поле. –

+0

@Neil popups - это не вариант, потому что всплывающие окна Xul будут скрыты, когда откроется другое окно. Поэтому мне нужно сделать всплывающее окно с использованием окна всегда на вершине, которое не получает фокуса. Было бы здорово, если бы Xul предоставил возможность делать всплывающие окна, которые попадают перед каждым окном (я имею в виду, каждый окно приложения Xul хотя бы) .. –

ответ

1

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

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

+0

+1 Идея прекрасна, но, может быть, потому, что я открываю ее из полностью прозрачного окна, она не будет близка к 'hidePopup()'. Любая идея, как я могу ее закрыть или скрыть? 'close()' тоже не работает .. –

+0

ops, 'close()' works .. У меня была опечатка без сообщения об ошибке при вызове метода. –

+0

К сожалению, он все еще украл открытие фокуса с помощью 'openDialog ('top.xul', 'TopWindow', 'chrome, popup'); ' –

 Смежные вопросы

  • Нет связанных вопросов^_^