Я пишу настольное приложение, используя nwjs, и хочу использовать правую кнопку мыши для некоторых функций пользовательского интерфейса. Сейчас это работает нормально; Я могу отключить контекстное меню, если щелкнуть правой кнопкой мыши для функции пользовательского интерфейса.
Однако мне очень сложно понять, как Только не останавливать события щелчка правой кнопкой мыши при открытии контекстного меню, а также не позволять им выбирать текст под курсором.
Вот пример того, что происходит (чего я не хочу) - я щелкаю левой кнопкой мыши и перетаскиваю дескриптор, чтобы изменить размер представления пользовательского интерфейса, а затем, удерживая левую кнопку мыши, я щелкаю правой кнопкой мыши, чтобы отменить изменение размера. Когда правый щелчок заканчивается на любом тексте, текст выделяется. (Обычно также появляется контекстное меню.)
При обработке события нажатия правой кнопки мыши и события контекстного меню я вызываю event.preventDefault() и возвращаю false.
Как выглядит фактический код обработчика событий (появляющийся в том же порядке, в котором события порождаются и обрабатываются) ...
this.windowMouseDownListener = event => {
if (this.draggingResize &&
event.button === 2 && !event.ctrlKey
){
for(let view of this.area.views){
view.size = view.sizeBeforeDrag;
}
this.area.updateElementSizes();
this.draggingResize = false;
this.recentDraggingResize = true;
event.preventDefault();
event.stopPropagation();
return false;
}
};
this.windowContextMenuListener = event => {
if (this.recentDraggingResize){
event.preventDefault();
return false;
}
};
this.windowMouseUpListener = event => {
this.sizeBeforeDrag = this.size;
if (this.size <= 0.0001){
this.area.removeView(this);
}
if (this.draggingResize || this.recentDraggingResize){
this.recentDraggingResize = false;
this.draggingResize = false;
event.preventDefault();
event.stopPropagation();
return false;
}
};
Как я могу исправить такое поведение?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Измените свойство css
user-selectи сделайте егоuser-select: none;Так же, как вы отключили контекстное меню в этом событии: latestDraggingResize.