Firefox的右键单击检测

时间:2010-08-01 20:04:52

标签: javascript

在开始之前,我没有询问是否阻止用户右键单击。这是用于在html5画布上进行右键单击检测。

目前,我所拥有的是:


  function init() {
   var canvas = document.getElementById('canvasID');\
   if (canvas.getContext) {
    ctx = canvas.getContext('2d');
    ctx.font = '10px sans-serif';
    ctx.canvas.onmousedown=ctx.canvas.onclick=onMousePressed;
    ctx.canvas.onmouseup=ctx.canvas.onmouseout=onMouseReleased;
    ctx.canvas.onmousemove = onMouseMove;
   }
  }

还有:


      function onMouseMove(e) {
   if (mouseDown) {
    click2 = convertCoordsToTileCoords({
     x: e.offsetX || e.layerX - this.style.left,
     y: e.offsetY || e.layerY - this.style.top
    });
    var rightclick;
    if (!e) e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
..等
变量'rightclick'是一个布尔值,如果该人右击,则结果为true。

这适用于哪些浏览器: 铬

歌剧,不,因为他们的鼠标手势和东西。 IE,不,因为画布。 但我无法弄清楚为什么它不适用于Firefox。

像往常一样,如果有更好,更有效的方法来解决这个问题,我们将非常感激。

-Firstmate

Edit1:提供更多代码。

2 个答案:

答案 0 :(得分:2)

如果你不介意使用jQuery,那么存在Right-click Plugin使这更加简单。

答案 1 :(得分:0)

在Firefox 3.6.4 / Mac中测试它按预期工作:

document.onclick = function(e) { 
    var rightclick;
    if (!e) e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alter(rightclick);
}

也许您没有正确附加点击处理程序?