Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№126-08-2010 17:48:15

zenbka
Участник
 
Группа: Members
Зарегистрирован: 18-08-2010
Сообщений: 4
UA: Opera 10.6

Как отловить событие переноса кнопки на панель

Здравствуйте!

Есть расширение для firefox, и в нем есть панель. На панели несколько разных элементов (кнопочки toolbarbutton, a также toolbaritem с textbox внутри)
Элементы находятся внутри  <toolbarpalette id="BrowserToolbarPalette">, а на мою панель попадают, так как прописаны в аттрибуте defaultset.

Вопрос:
Как отловить событие, когда юзер настраивает панели и переносит мои кнопки на другие панели или вовсе убирает?

(Путем экспериментов было замечено, что если у кнопки есть картинка, то проходит событие onload повешенное на toolbarbutton. Но если, например, в диалоге настройки кнопочек указать фаерфоксу чтоб показывал только надписи, это событие не будет проходить)

Отредактировано zenbka (26-08-2010 17:49:07)

Отсутствует

 

№227-08-2010 15:20:40

zenbka
Участник
 
Группа: Members
Зарегистрирован: 18-08-2010
Сообщений: 4
UA: Opera 10.6

Re: Как отловить событие переноса кнопки на панель

Так, ну я могу поймать '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)

Отсутствует

 

№307-09-2010 19:26:33

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 3.6

Re: Как отловить событие переноса кнопки на панель

а что мешает по указанному выше обработчику попытаться обратиться к нужным кнопкам по id (проверка не убрали ли кнопку) или проверить их parentNode (проверить не перенесли ли их на другую панель)?

Отсутствует

 

№408-09-2010 10:28:34

zenbka
Участник
 
Группа: Members
Зарегистрирован: 18-08-2010
Сообщений: 4
UA: Opera 10.6

Re: Как отловить событие переноса кнопки на панель

Shutnik пишет

а что мешает по указанному выше обработчику попытаться обратиться к нужным кнопкам по id (проверка не убрали ли кнопку) или проверить их parentNode (проверить не перенесли ли их на другую панель)?

Да, именно так я в итоге и сделал. Получается, при каждом событии dragdrop проверяется моя кнопка, есть она или нету. Так что я храню в переменной предыдущее состояние кнопки. Ну да, в целом, рабочее решение, хотя несколько смущает ощущение нериациональности.

Я думал, можно каким-то образом достучаться до глобальной переменной gCurrentDragOverItem из CustomizeToolbar.xul где хранится объект который переносится.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]