【问题标题】:disable text selection while right click with js?用js右键单击时禁用文本选择?
【发布时间】:2022-01-14 15:40:49
【问题描述】:

我有一个用于画布的自定义上下文菜单,但是对于文本元素我遇到了问题,当我尝试通过右键单击文本元素时,我有文本选择(如双击)。

当我使用时尝试使用:

document.addEventListener('contextmenu', (e) => {
   e.preventDefault();
})

它帮不上忙,因为我有文本选择。

【问题讨论】:

    标签: javascript html5-canvas mouseevent


    【解决方案1】:

    这不是真正的“值得回答”,但由于我的声誉低,我无法写评论。因此,话虽如此,您有诸如“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 是完整的文章。

    【讨论】:

    • thx,我看到了这篇文章,但是当我在所选元素上有右键单击事件时我需要,也许我无法用我糟糕的英语解释,例如在网站 canva.com,你添加工作区上的文本元素,并尝试单击右键单击文本中的单词而不选择
    • 你已经看到了这个article。我认为这可能会。但是,这是很容易绕过的事情,而且您不能真正永久地限制这种行为。
    【解决方案2】:

    有时内联 javascript 表达式是一个很好的技巧。例如我们正在编写的表单标签

    &lt;form id="test" onsubmit="return false;"&gt;

    所以我基于这个例子。也许你可以试试这个

    &lt;canvas oncontextmenu="return false;"&gt;&lt;/canvas&gt;

    在 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;
        }
      });
    

    【讨论】:

    • sry,但我的情况不是
    • 好吧,那么。你也可以试试这个document.addEventListener('contextmenu', (e) =&gt; { e.preventDefault(); return false; })
    • 我试图解释一个问题,当我做你的例子时,第一次点击右键它很好,但第二次点击我有选择文本,但我不需要它,我需要双击选择文本点击
    • 我编辑了我的解决方案,你可以试试吗?
    • 它不起作用,也许它的帮助,例如,转到canva.com/design/…从左侧标签添加文本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2013-10-05
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多