我正在开发一个网络应用程序,我希望在其中对元素进行不同的操作,无论我是左键还是右键单击它。
所以我首先添加了一个函数来click
使用 jQuery 处理事件,然后添加了第二个函数来处理oncontextmenu
我的元素的属性。
这在 Chrome 和 IE 中运行良好,但在 Firefox 中会导致问题:当我右键单击一个元素时,我处理左键单击的函数被意外调用,然后我处理右键单击的函数被调用。
如何让Firefox在我右键单击时不调用左键功能?
我正在开发一个网络应用程序,我希望在其中对元素进行不同的操作,无论我是左键还是右键单击它。
所以我首先添加了一个函数来click
使用 jQuery 处理事件,然后添加了第二个函数来处理oncontextmenu
我的元素的属性。
这在 Chrome 和 IE 中运行良好,但在 Firefox 中会导致问题:当我右键单击一个元素时,我处理左键单击的函数被意外调用,然后我处理右键单击的函数被调用。
如何让Firefox在我右键单击时不调用左键功能?
是的,浏览器传统上将右键单击发送到 onclick 处理程序,其中event.which属性设置为 3 而不是 1。IE 使用 oncontextmenu 代替,然后 Firefox 除了通常的 onclick 之外还选择了 oncontextmenu。为了满足浏览器的需求,您必须同时捕获这两个事件——或者找到一个可以为您完成这件事的插件。
请注意,即使解决了这个问题,您仍然不能保证获得右键单击事件或能够禁用标准上下文菜单。由于许多网页滥用了该功能,它在许多浏览器中被禁用,有时默认禁用(例如在 Opera 中)。如果您的应用程序提供右键单击操作,请始终确保有另一种方式来启动它们。
我的问题来自这样一个事实,一方面我使用了非常棒的 jQuerylive
函数,另一方面我使用click
了oncontextmenu
属性。(使用onclick
andoncontextmenu
不是问题)。
我刚刚通过捕获事件而不是在is$.live("click"...)
时触发其余事件来修改我的函数。e.which
3
问题解决了!