如何正确处理Firefox中的左键和右键

时间:2009-02-26 08:51:21

标签: javascript jquery firefox click right-click

我正在开发一个网络应用,我希望无论是左键还是右键点击该元素都会发生不同的操作。

所以我首先添加了一个用jQuery处理click事件的函数,然后添加了第二个函数来处理我的元素的oncontextmenu属性。

这在Chrome& IE但在Firefox中导致问题:当我右键单击一个元素时,我的函数处理左键单击令人惊讶地被调用,而然后我的函数处理右键单击被调用。

当我右键单击时,如何让Firefox不调用左键单击功能?

2 个答案:

答案 0 :(得分:6)

是的,浏览器传统上向onclick处理程序发送右键单击,event.which属性设置为3而不是1. IE上使用的是ontexttext,而Firefox除了通常的onclick之外还接收了oncontextmenu。为了迎合浏览器,您必须捕获这两个事件 - 或找到一个可以为您完成的插件。

请注意,即使已经整理出来,您仍然无法保证获得右键单击事件或能够禁用标准上下文菜单。由于许多网页滥用了这种能力,因此在许多浏览器中它都是不可用的,有时默认情况下是禁用的(例如在Opera中)。如果您的应用提供了右键单击操作,请始终确保有其他方法来启动它们。

答案 1 :(得分:1)

我的问题来自这样一个事实,即我在live使用了非常棒的jQuery click函数而另一方面使用了oncontextmenu属性。 (使用onclickoncontextmenu不是问题。)

我刚刚通过捕获事件修改了$.live("click"...)函数,而在e.which3时没有触发其余部分。

问题解决了!