Javascript 在具有WebGL上下文的画布中阻止右键单击

Javascript 在具有WebGL上下文的画布中阻止右键单击,javascript,html,canvas,webgl,Javascript,Html,Canvas,Webgl,我想停止HTML5画布上的鼠标右键打开上下文菜单,因为它妨碍了鼠标控制的游戏 我已尝试将oncontextmenu=“return false;”“添加到画布标记属性中。这在画布使用2D上下文时有效,但在Firefox和Chrome中使用WebGL上下文时无效 这是标准规定的还是两个同时出现的浏览器错误?是否有办法解决此问题并在WebGL上下文中阻止右键单击?每个浏览器的结果可能会有所不同,因此请确保此方法适用于所有目标浏览器。我只在Chrome上试过 yourCanvas.addEvent

我想停止HTML5画布上的鼠标右键打开上下文菜单,因为它妨碍了鼠标控制的游戏

我已尝试将
oncontextmenu=“return false;”“
添加到
画布
标记属性中。这在画布使用2D上下文时有效,但在Firefox和Chrome中使用WebGL上下文时无效


这是标准规定的还是两个同时出现的浏览器错误?是否有办法解决此问题并在WebGL上下文中阻止右键单击?

每个浏览器的结果可能会有所不同,因此请确保此方法适用于所有目标浏览器。我只在Chrome上试过

  yourCanvas.addEventListener('contextmenu', function(e) {
      if (e.button === 2) {
       e.preventDefault();
        return false;
      }
  }, false);
工作示例:


(它会在控制台中显示“test”,但不会生成上下文菜单)

我在阻止默认浏览器操作时使用以下代码

element.onevent=function(e){
    e.preventDefault();
    return false;
}
此代码绝对确保不会发生默认操作

切勿使用html属性来阻止默认设置

当我看到你的问题时,我在同样的情况下尝试过:

canvas.oncontextmenu=function(e){
    e.preventDefault();
    return false;
}
它完全按照它应该的方式工作


我希望这有助于这个问题的任何未来观众

您需要使用旧的右键单击处理程序(e.preventDefault(),e.stopPropagation())来完成此操作,因为这实际上不是一个WebGL问题,为什么不将该问题编辑为更通用的问题,如“在浏览器中阻止右键单击”或“在浏览器中阻止上下文菜单”?只是一个想法。我在Chrome 15上试过,但根本不起作用。该函数似乎从未被调用过。构造过程如何?在HN上看到你的最新帖子。我很想知道事情进展如何,你们两个面临着什么样的问题。哈,这很奇怪,你们的JSFIDLE代码可以工作,但当我将它粘贴到我的代码中时就不行了。我要在附近玩一玩。建设进展顺利,做流行的论坛,并说你好,如果你喜欢:)优秀的文章:。