Улавливание фотовспышки
В настоящее время в моем приложении я занимаюсь событиями колесика мыши и выполняю увеличение или уменьшение масштаба на элементе Canvas. Если пользователь использует Mac и пытается выполнить масштабирование с помощью трекпада, нет события, и на самом деле происходит масштабирование в/из браузера.
Есть ли способ поймать событие масштабирования, выполненное с помощью трекпада?
Ответы
Ответ 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