Добрый день.

В 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 - не получается...  Кнопка вообще не выводится на панель.
Можете подсказать как правильно сделать?

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

Код:

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

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

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

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

Выделить код

Код:

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);
},
Medison1 пишет

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

Может:

Выделить код

Код:

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

или

Выделить код

Код:

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

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

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

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

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