Страницы: 1
Здравствуйте!
Есть расширение для firefox, и в нем есть панель. На панели несколько разных элементов (кнопочки toolbarbutton, a также toolbaritem с textbox внутри)
Элементы находятся внутри <toolbarpalette id="BrowserToolbarPalette">, а на мою панель попадают, так как прописаны в аттрибуте defaultset.
Вопрос:
Как отловить событие, когда юзер настраивает панели и переносит мои кнопки на другие панели или вовсе убирает?
(Путем экспериментов было замечено, что если у кнопки есть картинка, то проходит событие onload повешенное на toolbarbutton. Но если, например, в диалоге настройки кнопочек указать фаерфоксу чтоб показывал только надписи, это событие не будет проходить)
Отредактировано zenbka (26-08-2010 17:49:07)
Отсутствует
Так, ну я могу поймать 'dragdrop' на toolbox:
document.getElementById('navigator-toolbox').addEventListener('dragdrop', function(event) { if( document.getElementById('my-toolbaritem') ) { // here some element (maybe, mine) was moved on a toolbar. } }, false);
Но событие срабатывает каждый раз, когда что-то переносят на тулбокс, и при этом мой элемент оказывается на панели (либо перенесли его, либо он уже был там). Это не очень красиво, но работает. Может, можно определить, какой именно элемент переносят?
В customizeToolbar.js я нашел переменную gCurrentDragOverItem, она, вроде как, указывает на элемент, который переносят. Можно ли получить эту переменную из главного окна и сравнить с моим элементом?
Отредактировано zenbka (27-08-2010 15:21:00)
Отсутствует
а что мешает по указанному выше обработчику попытаться обратиться к нужным кнопкам по id (проверка не убрали ли кнопку) или проверить их parentNode (проверить не перенесли ли их на другую панель)?
Отсутствует
а что мешает по указанному выше обработчику попытаться обратиться к нужным кнопкам по id (проверка не убрали ли кнопку) или проверить их parentNode (проверить не перенесли ли их на другую панель)?
Да, именно так я в итоге и сделал. Получается, при каждом событии dragdrop проверяется моя кнопка, есть она или нету. Так что я храню в переменной предыдущее состояние кнопки. Ну да, в целом, рабочее решение, хотя несколько смущает ощущение нериациональности.
Я думал, можно каким-то образом достучаться до глобальной переменной gCurrentDragOverItem из CustomizeToolbar.xul где хранится объект который переносится.
Отсутствует
Страницы: 1