Самый простой подход - это использовать мультитач * JavaScript-библиотеку , например Hammer.js . Тогда вы можете написать код, как:
canvas
.hammer({prevent_default: true})
.bind('doubletap', function(e) { // And double click
// Zoom-in
})
.bind('dragstart', function(e) { // And mousedown
// Get ready to drag
})
.bind('drag', function(e) { // And mousemove when mousedown
// Pan the image
})
.bind('dragend', function(e) { // And mouseup
// Finish the drag
});
И ты можешь продолжать. Он поддерживает касание, двойное касание, пролистывание, удержание, преобразование (т.е. сжатие) и перетаскивание. События касания также запускаются, когда происходят эквивалентные действия мыши, поэтому вам не нужно писать два набора обработчиков событий. Да, и вам нужен плагин jQuery, если вы хотите иметь возможность писать в jQueryish, как я.