5

我正在开发一款 RTS 游戏,您可以在其中选择单位并右键单击以将它们移动到某个地方。您也可以移动右键单击以将您希望单位前往的点列表排队。

在除 FF 之外的所有浏览器中,这都能完美运行。

然而,在 Firefox 中,shift 右键单击​​会触发上下文菜单(没有 shift 的右键单击不会)。我正在处理 contextmenu 事件并调用 preventDefault 但是当按住 shift 按钮时,这似乎在 FF 中没有做任何事情。

有什么办法可以阻止 FF 中的这种行为?

我的游戏在这里:https : //mod.it/4plhXo3l 以及第 36 行 RTSBoard.js 文件中的相关代码。

4

2 回答 2

3

通过将 event.shiftKey 设置为 false,然后调用 preventDefault() 和 stopPropagation(),然后返回 false,我设法让这个在 Firefox 中工作。然后,我将文档模型的 onclick 事件和 ondblclick 事件设置为您自己最终使用的相同函数,并将添加的 shiftkey 设置设置为 false。我还必须为 mouseup 事件执行此操作,因为单击和拖动也会导致上下文菜单弹出。

我不确定它可以完全 100% 禁用,但这看起来是你能得到的最接近的。

于 2013-08-17T03:42:26.830 回答
0

回答我自己的问题。在 document.onclick 事件中调用 preventDefault 和 stopPropagation 似乎可以解决问题。

有关更多讨论,请参阅此 reddit 线程:http ://www.reddit.com/r/javascript/comments/1agoj8/is_it_possible_to_block_the_shift_right_click/

于 2013-03-17T18:00:47.027 回答