Подтвердить что ты не робот

Улавливание фотовспышки

В настоящее время в моем приложении я занимаюсь событиями колесика мыши и выполняю увеличение или уменьшение масштаба на элементе Canvas. Если пользователь использует Mac и пытается выполнить масштабирование с помощью трекпада, нет события, и на самом деле происходит масштабирование в/из браузера.

Есть ли способ поймать событие масштабирования, выполненное с помощью трекпада?

4b9b3361

Ответ 1

По крайней мере, в Chrome трекпад "сжимается до зума" запускает событие колеса/мыши, которое появляется, как если бы нажата клавиша ctrl. Вы можете зафиксировать это событие так же, как любое другое событие колеса/мыши и предотвратить его по умолчанию. Вот пример использования jQuery:

$("canvas").on("mousewheel", function(e) {
    if (e.ctrlKey) {
        e.preventDefault();
        e.stopImmediatePropagation();

        // perform desired zoom action here
    }
});

Ответ 2

Начиная с Safari 9.1, вы можете захватывать события масштабирования и вращения с устройств OSX. Для получения дополнительной информации прочитайте Справочник класса GestureEvent.. Обратите внимание, что это работает только в Safari, но поскольку ваш вопрос касался " Mac отслеживания трекпада", я думаю, это то, что вы ищете.


Боковое примечание: эти события также поддерживаются в Safari на iOS.

Ответ 3

Насколько я знаю, пинч трекпада не вызывает события касания или жестов, поэтому Hammer.js не обнаружит его.

Мне удалось смоделировать обнаружение пинча в Chrome с помощью Hamster.js. Это вызовет событие колеса мыши, и вы можете использовать дельта, чтобы определить, приближается ли пользователь или нет.

Однако это решение не работало в Safari.

Ответ 4

Оглядываясь, это помогает? он охватывает как веб-приложение, так и javascript в своем обсуждении и приходит к hammer.js как возможное решение для обнаружения событий пинча... Простейший способ обнаружить щепотку

Ответ 5

Невозможно поймать увеличение/уменьшение масштаба трекпада только с помощью Javascript