Страницы: 1
Доброго времени суток. Есть такой момент, нажимаю на кнопку, по ней делаю открытие своего окна(xul файл) через window.openDialog(...). Допустим, я второй раз нажимаю на кнопку, как мне проверить что окно уже открыто? (я хочу, если оно уже открыто, то просто добавить в него вкладку). Думал передавать в openDialog() последним параметром логическую переменную, и повешать на окнообработчик onload,в котором устанавливать её в true, и эту же переменную проверять при нажатии на кнопку, мол если она true то окно не открываем, а работаем с текущим? Только вот ещё один момент, что будет являться текущим то? Или к открытому окну можно как-то обращаться по идентификатору(или имени, оно передаётся вторым параметром в openDialog())?
Отсутствует
покопай тут
https://developer.mozilla.org/en/Code_snippets/Windows
и там еще по ссылкамтам я смотрю у окна ID наличиствует
так что можно при открытии запоминать ид и в следующий раз если ид не пустой то окно открывалось и далее ищем его по ид если находим то лезем к нему если нет то окно уже закрыли и значит открываем новое.
подробнее с примерами не помогу - надо самому разбираться.
Спасибо за ссылку, по ней понял некоторую мысль - похоже можно использовать nsIWindowWatcher. При первоначальном создании окна задачать ему какое-нибдуь имя, и при следующем нажатии кнопки поискать окно по этому имени, если нашлось, то добавляем вкладку, если нет, то создаём новое
Отсутствует
xterro
window.openDialog возвращает переменную-ссылку на это окно. Сохраните её где-нибудь после открытия окна, а перед открытием проверяйте сохраненное значение, и если оно не null/undefined - проверяйте у переменной значение свойства closed - если окно было закрыто, то оно будет равно true.
Отсутствует
xterro
window.openDialog возвращает переменную-ссылку на это окно. Сохраните её где-нибудь после открытия окна, а перед открытием проверяйте сохраненное значение, и если оно не null/undefined - проверяйте у переменной значение свойства closed - если окно было закрыто, то оно будет равно true.
Благодарю, оказывается всё просто, как всегда
Отсутствует
window.openDialog возвращает переменную-ссылку на это окно. Сохраните её где-нибудь после открытия окна, а перед открытием проверяйте сохраненное значение, и если оно не null/undefined - проверяйте у переменной значение свойства closed - если окно было закрыто, то оно будет равно true.
Причем это «где-нибудь» должн быть глобальным для всех окон, а то пользователь из другого окна сможет открыть еще одно.
Проще добавить окну уникальный атрибут windowtype и проверять наличие уже открытого окна через getMostRecentWindow(). Или, если такой возможности нет, можно перебирать вообще все окна или только окна с определенным windowtype через getEnumerator().
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
должн быть глобальным для всех окон, а то пользователь из другого окна сможет открыть еще одно
Разумеется. Например, поле объекта, созданного в jsm-модуле - контекст BackstagePass как раз глобален для всех окон, в отличие от контекста ChromeWindow.
Отсутствует
Infocatcher пишетдолжн быть глобальным для всех окон, а то пользователь из другого окна сможет открыть еще одно
Разумеется. Например, поле объекта, созданного в jsm-модуле - контекст BackstagePass как раз глобален для всех окон, в отличие от контекста ChromeWindow.
У меня эта переменная определена в самом начале js -файла. Окно одно, так что думаю проблем не возникнет
P.S. А если действительно понадобится переменная, которую должны видеть все окна, где её определить?
Отредактировано xterro (14-11-2011 14:18:38)
Отсутствует
которую должны видеть все окна, где её определить?
Отсутствует
Страницы: 1