如何使用纯 JavaScript 在所有浏览器中区分左/右/中键单击事件

How to distinguish left/right/middle click events in all browsers, with plain JavaScript?

本文关键字:事件 单击 中区 JavaScript 何使用 浏览器      更新时间:2023-09-26

(我知道已经有类似的问题了,但我找不到一个非jQuery并且涵盖所有浏览器的问题。

我需要一个函数,它接受一个 JavaScript 单击事件并返回左键单击的 12返回中键单击,3返回右键单击。

是的,这就是event.which应该的样子,但并非所有浏览器都支持它,因此您必须使用event.button......但是,某些浏览器对该属性的编号方式不同。我发现很难弄清楚如何做到这一点。

我想要适用于所有浏览器的东西,包括IE6+(请不要质疑这一点(,Firefox 3.6 +,Chrome 10 +,Safari 5+。

请不要使用jQuery。

您可以查看链接鼠标事件,这是一个很好的解释。您可以使用其中提供的代码作为解决方法。

function fixWhich(e) {
    if (!e.which && e.button) {
        if (e.button & 1) e.which = 1 // Left
        else if (e.button & 4) e.which = 2 // Middle
        else if (e.button & 2) e.which = 3 // Right
    }
}

希望这有帮助。