首页 > 解决方案 > 右键单击禁用文本选择

问题描述

我正在使用 nwjs 编写一个桌面应用程序,并且我想使用鼠标右键来执行一些 UI 功能。这现在工作得很好;当右键单击 UI 功能时,我可以禁用上下文菜单。

但是,我很难弄清楚如何不仅阻止右键单击事件打开上下文菜单,而且阻止它们选择光标下的文本。

这是正在发生的事情的示例(我不想发生) - 我左键单击拖动手柄以调整 UI 视图的大小,然后在按住鼠标左键的同时右键单击以取消调整大小。当右键单击结束任何文本时,该文本被选中。(通常,还会出现上下文菜单。)

不良行为的 GIF

在处理鼠标右键按下事件和上下文菜单事件时,我正在调用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;
    }
};

我该如何解决这种行为?

标签: javascripthtmldom-eventsnwjs

解决方案


推荐阅读