3

我正在开发一个网络应用程序,我希望在其中对元素进行不同的操作,无论我是左键还是右键单击它。

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

这在 Chrome 和 IE 中运行良好,但在 Firefox 中会导致问题:当我右键单击一个元素时,我处理左键单击的函数被意外调用,然后我处理右键单击的函数被调用。

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

4

2 回答 2

6

是的,浏览器传统上将右键单击发送到 onclick 处理程序,其中event.which属性设置为 3 而不是 1。IE 使用 oncontextmenu 代替,然后 Firefox 除了通常的 onclick 之外还选择了 oncontextmenu。为了满足浏览器的需求,您必须同时捕获这两个事件——或者找到一个可以为您完成这件事的插件。

请注意,即使解决了这个问题,您仍然不能保证获得右键单击事件或能够禁用标准上下文菜单。由于许多网页滥用了该功能,它在许多浏览器中被禁用,有时默认禁用(例如在 Opera 中)。如果您的应用程序提供右键单击操作,请始终确保有另一种方式来启动它们。

于 2009-02-26T09:09:36.347 回答
1

我的问题来自这样一个事实,一方面我使用了非常棒的 jQuerylive函数,另一方面我使用clickoncontextmenu属性。(使用onclickandoncontextmenu不是问题)。

我刚刚通过捕获事件而不是在is$.live("click"...)时触发其余事件来修改我的函数。e.which3

问题解决了!

于 2009-02-26T11:24:56.693 回答