preventDefault阻止Mac上的Firefox中的右键菜单,但不阻止Windows

M. *_*llo 5 javascript firefox javascript-events

我有一个Web应用程序,其中我已经连接鼠标和鼠标按下事件; 我使用它们来选择和操作我的应用程序是编辑器的图形语言.为了防止Firefox提供的右键单击/上下文菜单显示,我放置了:

if (evt.preventDefault) {
  evt.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)

在我的每个鼠标向上和鼠标按下事件处理程序的顶部.我不想归谎; 我实际上希望事件传播.

在Mac上,右键单击菜单不会显示; 这就是我的期望.然而,在Windows上,它顽固地出现,即使Firebug确认我的"preventDefault"调用正在发生,同样"defaultPrevented"被设置为true.

知道是什么给出的吗?还有其他人遇到过这个问题吗?我在Mac和Windows上运行Firefox 6.0.2.

[更新:更新版本的Firefox在Mac和Windows上产生了一致的结果:在两个平台上都无法抑制上下文菜单.]

M. *_*llo 14

好的.将它放在一边并多次返回后,我终于找到了解决方案.

尝试在各种鼠标监听器中处理上下文菜单的外观似乎存在根本缺陷.相反,感谢我在这里找到的代码,我被置于contextmenu事件的气味中.这个事件似乎是处理事情的正确方法,虽然实际发布在该网站上的代码没有做到这一点 - 仅仅调用"stopPropagation"并返回false是不够的.

以下对我有用:

element.addEventListener('contextmenu', function(evt) { 
  evt.preventDefault();
}, false);
Run Code Online (Sandbox Code Playgroud)

这已经在Mac上使用Firefox 10.0和在Windows 7上使用Firefox 9.0.1和10.0进行了测试.