在选定文本时阻止 Edge 浏览器的上下文菜单

8
在最近的版本中,Edge 在选择文本时会显示上下文菜单。有没有办法使用 JavaScript 阻止这种行为?我尝试了 window.oncontextmenu = e => {e.preventDefault();}; 但没有成功。enter image description here

1
你可以在所需的标签上使用CSS属性user-select: nonepointer-events: none,但这可能会阻止文本选择等行为。不幸的是,上下文菜单仅专用于右键上下文菜单。 - PedroZorus
3个回答

13
如果您在Edge浏览器中不需要使用此功能,可以通过特定设置禁用此菜单选项。
只需按照以下步骤操作:
  1. 在Edge浏览器中导航到 edge://settings/appearance
  2. 向下滚动页面至 上下文菜单 部分。
  3. 禁用选项 选择文本时显示迷你菜单
类似于这样的效果:

enter image description here

另外,根据您的需求,您还可以禁用特定网站上的此功能。

2
window.onmouseup = event => event.preventDefault();

0
根据Dmitry Korenko的建议,我制作了一个版本,只有在浏览器为Edge时才添加该事件。
这个事件的问题在于,要取消选择,你需要点击选定元素之外的区域。 这会导致一个问题,因为如果你使用CTRL + A选择了所有内容,你无法取消选择,因为没有未选择的元素可供点击。这就是为什么我制作了第二个事件,在双击时取消选择。
function disableEdgeMiniMenu() {
    if (/Edg\//.test(window.navigator.userAgent)) { // if it's edge (chromium-based)
        window.addEventListener("mouseup", event => event.preventDefault())
        window.addEventListener("dblclick", () => window.getSelection().empty())
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接