Здравствуйте.
Помогите пожалуйста решить проблему:
Расширение в грузит в нескольких параллельных табах страницы и обрабатывает их. В процессе загрузки страниц иногда всплывают диалоговые окна с запросами паролей и т.п. Как можно из расшения получить доступ к такому окну и придудительно закрыть его (не важно, какой кнопкой и не важно будет ли туда введено что-нибудь)?
Можно ли как-нибудь узнать что выплыло окно и отреагировать на это?

Спасибо.

Есть, по меньшей мере, два варианта:
1. http://forum.mozilla.ru/viewtopic.php?id=10479
2. http://xpoint.ru/forums/programming/XUL … 6827.xhtml

Anton пишет

Есть, по меньшей мере, два варианта:
1. http://forum.mozilla.ru/viewtopic.php?id=10479

Эту тему видела, но не смогла понять как получить доступ к окну сообщения, чтобы перехватить аллерт. и куда надо вставить приведенный там код. Не расскажите подробнее? Дело в том, что я пока не очень хорошо разбираюсь в javаScript и XUL, а расширение написать надо... :)

За ссылку спасибо. Сейчас буду пробовать этот способ.

Anton
Кстати, диалоговые окна с запросами паролей - это, кажется, не alert'ы, prompt'ы и confirm'ы. Поэтому так просто их перехватить не получится. Например, в tb чтобы не появлялось окошко об ошибке связи ausdilecce так и не удалось сделать - он только нажимает кнопку OK в таких окошках. Или мы все-таки тупим и как-то можно? Если да - плз пример ;)

Вроде получилось перехватывать загрузку диалоговых окон с запросами паролей, сообщей о сертификатах и т.п.
Для этого пришлось повесить оверлеи на
chrome://global/content/commonDialog.xul
chrome://mozapps/content/downloads/unknownContentType.xul
chrome://pippki/content/serverCertExpired.xul.
Самое сложное было найти какой xul файл за какой диалог отвечает. :)

Может где нибудь есть список всех элементов интерфейса mozilla с указанием в каком xul файле они описаны (а то пришлось довольно долго искать в исходниках)?

Elena
А ты расширение DOM Inspector не пробовала? Делаешь, чтобы нужное тебе окошко появилось и через DOM Inspector смотришь - там указаны их xul-исходники.

Lynxx
Спасибо! он у меня даже стоит, но что-то из головы совсем вылетело. :)
Только вот некоторые из диалогов (видимо, модальные) блокируют доступ к меню firefox так что DOMInspector не могу вызвать...

Elena
Запусти DOM Inspector в самом начале работы fx. И не закрывай его. Он будет доступен отдельным окном и не будет блокироваться алертами :)

Lynxx пишет

Elena
Запусти DOM Inspector в самом начале работы fx. И не закрывай его. Он будет доступен отдельным окном и не будет блокироваться алертами :)

Поняла. Спасибо. :)

Еще вопрос: а все таки нет списка всех возможных диалоговых окон которые могут всплыть в процессе работы? а то получается их находить только эксперементальным путем (а это мееедленно :( и не факт что удасться отловить все возможные), а хотелось бы для всех сразу прописать оверлеи для блокировки...

Lynxx пишет

Anton
Кстати, диалоговые окна с запросами паролей - это, кажется, не alert'ы, prompt'ы и confirm'ы. Поэтому так просто их перехватить не получится. Например, в tb чтобы не появлялось окошко об ошибке связи ausdilecce так и не удалось сделать - он только нажимает кнопку OK в таких окошках. Или мы все-таки тупим и как-то можно? Если да - плз пример ;)

А из первого поста неочевидно, какие именно диалоговый окна подразумеваются - может, javascript просит некоторые пароли через window.prompt. Ну, раз уж речь о nsIPromptService, тогда только оверлеи. Или собственный компонент nsIPromptService - только, имхо, это будет сложнее, чем с оверлеями - компоненту придётся самостоятельно открывать нужные диалоги при необходимости (я (пока?) не знаю как вызвать метод из перекрытой компоненты).