4

我正在制作一个需要使用右键单击来控制播放器的 HTML 5 游戏。

我已经能够通过执行以下操作禁用右键单击上下文菜单:

<body oncontextmenu="return(false);">

然后我注意到如果你按住 shift 并右键单击,一个上下文菜单仍然会在 Firefox 中打开!

所以我也通过添加这个 JS 来禁用它:

document.onclick = function(e) { if(e.button == 2 || e.button == 3) { e.preventDefault(); e.stopPropagation(); return(false); } };

但是,如果您按住 shift,然后在 Firefox 中双击右键,它仍然会打开!

请告诉我如何一劳永逸地禁用这个该死的东西(只要它有效,我什至愿意恢复到一些晦涩难懂、不切实际的解决方案)。

4

3 回答 3

2

您永远无法在所有情况下完全禁用上下文菜单,因为 Firefox 有一个设置允许用户告诉浏览器在您尝试拉动时忽略此类 hijinx。 注意:我在 Mac 上,但这个设置在所有平台上几乎都在同一个地方。

话虽如此,请尝试 event.preventDefault() (请参阅 Vikash Madhow 对另一个 SO 问题的评论: 如何在 javascript 中禁用右键单击上下文菜单

于 2013-05-04T19:24:57.430 回答
2

官方文档中实际上有一个直接阻止上下文菜单事件的示例:

document.oncontextmenu = function () { // Use document as opposed to window for IE8 compatibility
  return false;
};

window.addEventListener('contextmenu', function (e) { // Not compatible with IE < 9
  e.preventDefault();
}, false);
于 2016-11-11T09:59:34.020 回答
1
document.ondblclick = function(e) { 
    if(e.button == 2 || e.button == 3) {
        e.preventDefault();
        e.stopPropagation();
        return(false);
    }
};
于 2013-06-16T05:38:59.467 回答