jQuery/Javascript сила / давление на клик мыши

Мне было интересно, есть ли способ получить уровень давления (давление, которое пользователь нажимает, нажимая на кнопку / клавишу мыши). Любой ресурс или ссылки?

Извините за мой плохой английский, надеюсь, мой вопрос ясен, и надеюсь, что это не просто утопия!

3 ответа

Решение

Мышь (аппаратная часть) не регистрирует, насколько сильно вы нажимаете на нее, и javascript не может отследить то, что не существует.

Я понимаю, что наталкиваюсь на старую ветку чем-то, что тогда не имело значения, но я верю, что это будет полезно другим в будущем.

Как отмечали многие другие в этой теме, почти все компьютерные мыши не измеряют используемое давление, поэтому вы не можете измерить его. Тем не менее, существуют другие указательные устройства, чем мыши, например, планшеты для рисования или трекпад. В браузерах на основе Gecko, таких как Firefox, есть нестандартные mozPressure атрибут на событиях мыши. Вы бы использовали это примерно так:

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

mozPressure это значение от 0,0 до 1,0 в зависимости от того, насколько сильно была нажата мышь. Если вы используете обычную мышь или что-то еще, что не определяет давление, то это всегда будет 0.

Ссылка

Это явно не вопрос о физическом давлении, а мера того, как долго пользователь держит кнопку мыши нажатой и увеличивает частоту какого-либо эффекта на основе этой информации. Это мое мнение:

      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);
    }
}
Другие вопросы по тегам