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

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№108-09-2015 17:02:11

Medison1
Участник
 
Группа: Members
Зарегистрирован: 05-09-2015
Сообщений: 11
UA: Firefox 40.0

Отлов Right\Left click по кнопке на toolbar

Добрый день.

В overlay.xul создаю кнопку на панеле.

Выделить код

Код:

<toolbarpalette id="BrowserToolbarPalette">
    <toolbarbutton id="Test_button" 
        label="Test_B" 
        tooltiptext="Test_click" 
        oncommand="MakeTest()" 
        class="toolbarbutton-1 chromeclass-toolbar-additional">
    </toolbarbutton>
</toolbarpalette>

И все отлично работает. Но вот задумал я сделать вызов разных функций в зависимости от ЛКМ или ПКМ.
И вроде бы нашел код похожий на форуме. Вроде 1-Left \ 2 - Middle \ 3 - Right click.

Выделить код

Код:

var testbt = document.getElementById("Test_button")
testbt.addEventListener("mousedown",function(e) {console.log(e); // you can inspect the click event
if (e.which === 3) {alert("right click");}
});

Но как не прикручиваю его в файл overlay - не получается...  Кнопка вообще не выводится на панель.
Можете подсказать как правильно сделать?

Отсутствует

 

№209-09-2015 18:03:34

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Отлов Right\Left click по кнопке на toolbar

Medison1 пишет
Выделить код

Код:

if (e.which === 3) {alert("right click");

Разве не e.button тут нужно использовать :/
mousedown - Event reference | MDN

Отсутствует

 

№310-09-2015 16:51:02

Medison1
Участник
 
Группа: Members
Зарегистрирован: 05-09-2015
Сообщений: 11
UA: Firefox 40.0

Re: Отлов Right\Left click по кнопке на toolbar

Спасибо, получилось.
Основная проблема оказалась в том, что я пытался внедрить этот код в overlay, а не сам исполняемый js sript.

Отсутствует

 

№410-09-2015 17:48:15

Medison1
Участник
 
Группа: Members
Зарегистрирован: 05-09-2015
Сообщений: 11
UA: Firefox 40.0

Re: Отлов Right\Left click по кнопке на toolbar

Немного поспешил...
При отлове ПКМ всплывает стандартное меню (хотя и не всегда, иногда почему-то оно не выводилось), как правильно его отключить?

Выделить код

Код:

function MakeChoice (event) { //Функция вызывается из оверлея по команде oncommand="MakeChoice()"
        
event.preventDefault();
event.stopPropagation();
// event.type == "mouseup" && closeMenus(event.target); // пробовал и так
if (event.button === 0) {Alert("ЛКМ");} //Left
else if (event.button === 2) {Alert("ПКМ");} //Right
}

var testbt = document.getElementById("Test_button")
testbt.addEventListener("mousedown", MakeChoice);
},

Отсутствует

 

№510-09-2015 18:03:50

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 24.0

Re: Отлов Right\Left click по кнопке на toolbar

Medison1 пишет

При отлове ПКМ всплывает стандартное меню (хотя и не всегда, иногда почему-то оно не выводилось), как правильно его отключить?

Может:

Выделить код

Код:

testbt.setAttribute("context", "event.stopPropagation()");

или

Выделить код

Код:

testbt.setAttribute("context", "");

Отсутствует

 

№611-09-2015 13:59:24

Medison1
Участник
 
Группа: Members
Зарегистрирован: 05-09-2015
Сообщений: 11
UA: Firefox 40.0

Re: Отлов Right\Left click по кнопке на toolbar

bunda1 спасибо за помощь, но не помогло.

В ходе экспериментов по подстановке в разные места функций выяснилось, что:
Первый код вообще все блокирует, т.е. кнопка такое ощущение что даже не нажимается.
Второй код просто не работает.

Отсутствует

 

№712-09-2015 16:33:04

Medison1
Участник
 
Группа: Members
Зарегистрирован: 05-09-2015
Сообщений: 11
UA: Firefox 40.0

Re: Отлов Right\Left click по кнопке на toolbar

Странно, но сейчас срабатывает без каких либо event.preventDefault(); и event.stopPropagation();
Но первый клик всегда уходит "в молоко". Со второго клика уже начинает действовать функция.
Видимо это происходит потому, что код добавляющий обработчик события вешается уже после нажатия на кнопку на тулбаре.

Можете подсказать, как можно повесить его раньше, чтобы уже первый клик по кнопке срабатывал?
Пробовал в overlay писать код инициализации в теге <script> - не помогло.

Отсутствует

 

Board footer

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