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