【问题标题】: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 属性。 (使用onclickoncontextmenu 没有问题)。

      我刚刚修改了我的$.live("click"...) 函数,当e.which3 时捕获事件而不触发其余函数。

      问题解决了!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多