tabbrowser.showMessage - не нашел документацию о нем
Меня интересует можно ли перехватить появление этого сообщения на лету и заблокировать его отображение из своего расширения.
Это же не сообщение, а метод. Если нужно — просто заменяйте его из своего расширения.
var tabbrowser = getBrowser(); var oldShowMessage = tabbrowser.showMessage; tabbrowser.showMessage = function(aBrowser, aIconURL, aMessage, aButtonLabel, aDocShell, aSource, aPopup, aTopBottom, aShowCloseButton, aButtonAccesskey) { // Делаем что-то ... // А теперь вызываем старый метод -- если нужно return oldShowMessage.apply(this, arguments); }
Документацию я, кстати, и сам совсем недавно искал. Нет такой :-(
Обычно при нажатии на кнопку что-то происходит, но я так и не нашел эту информацию у какого-нибудь из этих параметров. Например, если не найден плагин, то при нажатии кнопки браузер будет пытаться найти его. Вот хотелось бы достучаться до этого запроса. Это возможно?
Раскопал все-таки... При щелчке на этой кнопке уведомляются observer'ы, таким образом его и можно отловить. Параметры:
- subject: значение параметра aDocShell
- topic: значение параметра aSource
- someData: пустая строка
Откуда: реализация xul:browsermessage в browser.xml
Это немного не то... Мне нужно до нажатия на кнопку скрыть showMessage. Вот что приходит в этот метод:
aBrowser = [object XULElement] aIconURL = chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png aMessage = Additional plugins are required to display all the media on this page. aButtonLabel = Install Missing Plugins... aDocShell = aSource = missing-plugin aPopup = null aTopBottom = top aShowCloseButton = true aButtonAccesskey = I
Может aBrowser содержит какие-то инструкции для кнопки, но там пропертей до черта. Наверное прийдётся самому анализировать содерживао страницы и уже потом решать отображать showMessage или нет.
Так я же вроде уже сказал — заменяйте этот метод у tabbrowser окна и просто не показывайте сообщение тогда, когда вам оно не нужно. Или я что-то не понимаю?
Всё правильно, просто я надеялся обойтись без дополнительного парсинга HTML, ведь браузер по сути дела уже провёл эту работу. И я надеялся ,что в этот метод приходит более детальная информация.
Мне нужна информация, которая будет передана в "Plugin Finder Service ". В частности - application-type ненайденного плагина.
Браузер хранит ее в tabbrowser.mCurrentTab.missingPlugins. Это хеш-таблица, в которой ключем служит mime-type, а значением — объект {mimetype: tagMimetype, pluginsPage: pluginsPage} (см. getPluginInfo() в browser.js). Вот только можно ли на это завязываться...