右键单击禁用文本选择

时间:2018-08-15 11:41:09

标签: javascript html javascript-events nwjs

我正在使用nwjs编写桌面应用程序,并且我想使用鼠标右键来实现某些UI功能。现在这可以正常工作;右键单击UI功能时,可以禁用上下文菜单。

但是,我很难理解如何 不阻止右键单击事件打开上下文菜单,又要阻止它们选择光标下的文本。

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

GIF of unwanted behavior

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

如何解决此问题?

0 个答案:

没有答案