【问题标题】:How to stop a browser from opening a dialogue box when a user clicks the right mouse button?当用户单击鼠标右键时,如何阻止浏览器打开对话框?
【发布时间】:2023-03-19 06:26:01
【问题描述】:

我正在制作一个游戏,它使用画布元素,我需要两个鼠标按钮。当用户按下鼠标右键时,如何阻止浏览器(我希望它在大多数主要浏览器中运行,因此,最好解决方案是通用的)打开该对话框。我怎样才能在 JavaScript 中做到这一点?我试过了,但它不起作用:

self.onClick = function(ev)
{
    if(ev.button == 2)
    {
        ev.preventDefault();
    }

    var x = ev.clientX - self.canvas.offsetLeft;
    var y = ev.clientY - self.canvas.offsetTop;
    input.mouse = {"button": ev.button, "click": true, "x": x, "y": y};
}

然后将全局变量输入发送到服务器进行处理。

编辑:它现在可以工作了。我不得不编辑画布元素(canvas oncontextmenu="return false")

【问题讨论】:

标签: javascript html browser canvas mouse


【解决方案1】:

使用 self.oncontextmenu 并在事件上调用 preventDefault。

self.oncontextmenu = function(e) {
  e.preventDefault();
}

请注意,有些用户可能不喜欢您禁用他们的上下文菜单。

【讨论】:

  • 这是游戏中绝对重要的部分,是一种移动单位并向他们发出命令的方式。
  • 另外,恐怕不行。在最新版本的 Chrome for Linux 上进行了测试。
  • @bane 它适用于我(Windows 上的 Chrome):jsfiddle.net/DigitalPlane/pCTpQ
  • 现在也对我有用 :) 我会接受你的回答,因为它给了我一个提示。
【解决方案2】:

你可以试试这个:

self.oncontextmenu = function() {
    return false;
};

【讨论】:

    【解决方案3】:

    是onclick而不是onClick

    在这种情况下使用

    self.oncontextmenu=function() { return false }

    self.oncontextmenu=function(e) { e.preventDefault(); }

    在普通的 JS 中

    【讨论】:

    • 奇怪,这不起作用。我正在使用最新版本的 Chrome for Linux。
    • 这和接受的答案有什么区别???看看你的更新,这似乎是我的第一个建议。
    • 嗯,我得到的所有答案都是一样的,但我不能全部接受。我确实给了你一个UPS和东西......
    • 他们可能是一样的,但他们在不同的时间得到了回答,我还解释了你的一个错字。没关系...
    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 2013-05-04
    • 2012-10-06
    • 1970-01-01
    • 2016-07-25
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多