>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как отловить событие переноса кнопки на панель http://forum.mozilla-russia.org/viewtopic.php?id=45797 |
zenbka > 26-08-2010 17:48:15 |
Здравствуйте! Есть расширение для firefox, и в нем есть панель. На панели несколько разных элементов (кнопочки toolbarbutton, a также toolbaritem с textbox внутри) Вопрос: (Путем экспериментов было замечено, что если у кнопки есть картинка, то проходит событие onload повешенное на toolbarbutton. Но если, например, в диалоге настройки кнопочек указать фаерфоксу чтоб показывал только надписи, это событие не будет проходить) |
zenbka > 27-08-2010 15:20:40 |
Так, ну я могу поймать '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); Но событие срабатывает каждый раз, когда что-то переносят на тулбокс, и при этом мой элемент оказывается на панели (либо перенесли его, либо он уже был там). Это не очень красиво, но работает. Может, можно определить, какой именно элемент переносят? |
Shutnik > 07-09-2010 19:26:33 |
а что мешает по указанному выше обработчику попытаться обратиться к нужным кнопкам по id (проверка не убрали ли кнопку) или проверить их parentNode (проверить не перенесли ли их на другую панель)? |
zenbka > 08-09-2010 10:28:34 |
Shutnik пишет
Да, именно так я в итоге и сделал. Получается, при каждом событии dragdrop проверяется моя кнопка, есть она или нету. Так что я храню в переменной предыдущее состояние кнопки. Ну да, в целом, рабочее решение, хотя несколько смущает ощущение нериациональности. Я думал, можно каким-то образом достучаться до глобальной переменной gCurrentDragOverItem из CustomizeToolbar.xul где хранится объект который переносится. |