Я хочу установить атрибуты label
и прослушиватели событий для toolbaritem
, когда он используется. Потому что, хотя я добавляю расширение toolbaritem
до <toolbarpalette id="BrowserToolbarPalette">
, он не найден document.getElementById
, если он не используется. На данный момент у меня есть DOMNodeInserted
прослушиватели событий на панели навигации и дополнительной панели, которая устанавливает мои атрибуты toolbaritem
, но мне интересно, есть ли лучший способ?Каков наилучший способ уведомления при использовании инструментальной панели расширения?
ответ
Посмотрите на Broadcasters and Observers. Я думаю, это поможет вам.
Вы слишком рано звоните document.getElementById
, возможно, до того, как Firefox добавит элемент на панель инструментов? Если это так, вы можете переместить свой код на функцию, которая зарегистрирована для вызова в событии "load"
в главном окне браузера. Это должно гарантировать, что браузер, включая панель инструментов, был успешно создан к моменту запуска вашего кода.
Вызов document.getElementById находится в прослушивателе событий «load», элемент dne и это выглядит потому, что пользователю нужно настроить панель инструментов и добавить ее. – erikvold
Я просто прочитал его, он не кажется полезным. Он, как представляется, описывает, как вы можете передавать изменения в несколько элементов в документе, но я хочу знать, когда панель инструментов добавлена в browser.xul, что кажется мне совершенно другой проблемой. – erikvold
@Erik Vold: Какие слушатели вы хотите добавить к кнопке? Вы сказали *, который устанавливает мои атрибуты toolbaritem *. Вместо этого вы можете использовать атрибуты и обработчики событий в вещателе и позволить панели инструментов наблюдать за ними. –
Спасибо Феликс, теперь это лучший способ решить мою проблему, но не отвечает на мой вопрос. – erikvold