jQuery/Javascript鼠标点击力/压力

dzhpxtsq  于 2023-02-15  发布在  jQuery
关注(0)|答案(3)|浏览(133)

我想知道是否有任何方法可以得到压力水平(压力用户点击鼠标键/按钮)点击。任何资源或链接?
对不起,我的英语不好,希望我的问题是明确的,希望不仅仅是乌托邦!

m4pnthwp

m4pnthwp1#

  • 我意识到我是在用一些当时不相关的东西来碰撞一个旧的线程,但我相信这将在未来对其他人有用。*

正如本帖中的许多其他人所指出的,几乎所有的电脑鼠标都不测量所用的压力,所以你无法测量它。然而,还有一些不同于鼠标的指点设备,比如绘图板或触控板。在Firefox等基于Gecko的浏览器中,鼠标事件上有一个非标准的mozPressure属性。你可以像这样使用它:

document.addEventListener('click', function (e) {
    alert(e.mozPressure);
});

mozPressure是一个介于0.0和1.0之间的值,取决于鼠标被按下的力度。如果您使用的是普通鼠标或其他无法检测到压力的鼠标,则该值将始终为0。
Reference.

py49o6xq

py49o6xq2#

鼠标(硬件)不会记录你点击它的力度,javascript也无法追踪不存在的东西。

ff29svar

ff29svar3#

这显然不是一个关于物理压力的问题,而是一个测量用户按住鼠标键多长时间,并根据这些信息增加某些效果的频率的方法。

someButton.addEventListener('mousedown', function(e) {
    if (e.button == 0) {
        someRelevantParentContainer.mouse0Pressed = true;
        window.addEventListener('mouseup', function() {
            someRelevantParentContainer.mouse0Pressed = false;
        }, {once : true});
            
        const func = function() {
            if (someRelevantParentContainer.mouse0Pressed && !someButton.disabled) {
                // do something
                return true;
            }
            else {
                return false;
            }
        };
        recurAction(func, 200);
    }
});

function recurAction(func, startingTimeout, minTimeout = 50) {
    if (!func()) {
        return;
    }
    if (startingTimeout > minTimeout) {
        setTimeout(function() {
            const cont = func();
            if (cont) {
                recurAction(func, startingTimeout / 1.3);
            }
        }, startingTimeout);
    }
    else {
        const inter = setInterval(function() {
            if (!func()) {
                clearInterval(inter);
            }
        }, minTimeout);
    }
}

相关问题