我正在使用nwjs编写桌面应用程序,并且我想使用鼠标右键来实现某些UI功能。现在这可以正常工作;右键单击UI功能时,可以禁用上下文菜单。
但是,我很难理解如何 不阻止右键单击事件打开上下文菜单,又要阻止它们选择光标下的文本。
这里是正在发生的事情(我不想发生)的示例-我左键单击拖动手柄以调整UI视图的大小,然后在按住鼠标左键的同时右键单击取消调整大小。当右键单击结束任何文本时,将选择该文本。 (通常,还会显示一个上下文菜单。)
处理鼠标右键事件和上下文菜单事件时,我正在呼叫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;
}
};
如何解决此问题?