Как нажать кнопку мыши из командного события в XUL?

Похоже, что события XUL команда и щелкнуть несколько отличаются.

Хотя моя функция действительно вызывается при использовании события команда, объект события не содержит свойства кнопка.

Мой вопрос: как определить, какая кнопка мыши была нажата, без использования события щелкнуть?

Самый простой код, демонстрирующий мою проблему:

<?xml version = "1.0"?>
<?xml-stylesheet href = "chrome://global/skin/" type = "text/css"?>

<window id = "yourwindow" xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script language = "JavaScript">
    var showMeTheButton=function(e)
    {
        alert(e.button);
    }
</script>
<button onclick = "showMeTheButton(event)" label = "Click me with onclick"></button>
<button oncommand = "showMeTheButton(event)" label = "Click me with oncommand"></button>
</window>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
975
1

Ответы 1

Главное помнить, что oncommand запускается для любого действия, которое приводит к активации кнопки, что может включать нажатие клавиши пробела, когда кнопка находится в фокусе, использование сочетания клавиш, прикрепленного к кнопке, или нажатие кнопки. с помощью мыши. На самом деле обработчик событий не должен заботиться о том, как он был вызван, а только о том, что это было. (Я полагаю, что это было сознательное решение сохранить последовательный пользовательский интерфейс.)

Единственные действия, которые приводят к добавлению свойства кнопки к объекту события, - это onclick, ondblclick, onmousedown и onmouseup. Вы заметите, что даже если вы отключите кнопку onclick, событие все равно сработает, тогда как с oncommand этого не произойдет.

Чтобы получить ту же функциональность, что и oncommand, вам нужно будет самостоятельно обрабатывать события onclick и onkeydown, убедившись, что кнопка все еще активна. Вы также можете создать настраиваемую кнопку с помощью XBL, которая имеет настраиваемые события, такие как onleftclick или onmiddleclick, которые затем возвращаются к oncommand, если они не установлены, - но я не пробовал.

Другие вопросы по теме