【发布时间】:2022-01-14 15:40:49
【问题描述】:
我有一个用于画布的自定义上下文菜单,但是对于文本元素我遇到了问题,当我尝试通过右键单击文本元素时,我有文本选择(如双击)。
当我使用时尝试使用:
document.addEventListener('contextmenu', (e) => {
e.preventDefault();
})
它帮不上忙,因为我有文本选择。
【问题讨论】:
标签: javascript html5-canvas mouseevent
我有一个用于画布的自定义上下文菜单,但是对于文本元素我遇到了问题,当我尝试通过右键单击文本元素时,我有文本选择(如双击)。
当我使用时尝试使用:
document.addEventListener('contextmenu', (e) => {
e.preventDefault();
})
它帮不上忙,因为我有文本选择。
【问题讨论】:
标签: javascript html5-canvas mouseevent
这不是真正的“值得回答”,但由于我的声誉低,我无法写评论。因此,话虽如此,您有诸如“onCopy”、“onCut”、“onPaste”等事件。您可以单独禁用每个事件。你可以在这里看到一个例子:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<h2>Copy, cut and paste disabled</h2>
<input type="text" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off/>
<br>
</body>
</html>
如果您还有其他问题 - here 是完整的文章。
【讨论】:
有时内联 javascript 表达式是一个很好的技巧。例如我们正在编写的表单标签
<form id="test" onsubmit="return false;">
所以我基于这个例子。也许你可以试试这个
<canvas oncontextmenu="return false;"></canvas>
在 cmets 之后编辑:我不知道您需要哪个按钮操作,但也许您可以尝试找到 1,2,3,4...
document.addEventListener('contextmenu', function(e) {
// forexample right-click is equal to two
if (e.button == 2) {
// Block right-click menu, thru preventing default action
e.preventDefault();
// if its not work with e.preventDefault(); add next line return false;
}
});
【讨论】:
document.addEventListener('contextmenu', (e) => { e.preventDefault(); return false; })