我正在开发一个网络应用,我希望无论是左键还是右键点击该元素都会发生不同的操作。
所以我首先添加了一个用jQuery处理click
事件的函数,然后添加了第二个函数来处理我的元素的oncontextmenu
属性。
这在Chrome& IE但在Firefox中导致问题:当我右键单击一个元素时,我的函数处理左键单击令人惊讶地被调用,而然后我的函数处理右键单击被调用。
当我右键单击时,如何让Firefox不调用左键单击功能?
答案 0 :(得分:6)
是的,浏览器传统上向onclick处理程序发送右键单击,event.which属性设置为3而不是1. IE上使用的是ontexttext,而Firefox除了通常的onclick之外还接收了oncontextmenu。为了迎合浏览器,您必须捕获这两个事件 - 或找到一个可以为您完成的插件。
请注意,即使已经整理出来,您仍然无法保证获得右键单击事件或能够禁用标准上下文菜单。由于许多网页滥用了这种能力,因此在许多浏览器中它都是不可用的,有时默认情况下是禁用的(例如在Opera中)。如果您的应用提供了右键单击操作,请始终确保有其他方法来启动它们。
答案 1 :(得分:1)
我的问题来自这样一个事实,即我在live
使用了非常棒的jQuery click
函数而另一方面使用了oncontextmenu
属性。 (使用onclick
和oncontextmenu
不是问题。)
我刚刚通过捕获事件修改了$.live("click"...)
函数,而在e.which
为3
时没有触发其余部分。
问题解决了!