Try the code below to achieve context menu and double click on mobile devices.
(function($){
var longTouchTimer = null;
var dblTouchTimer = null;
var isDblClick = false;
function onTouchStart(e){
if (!isDblClick){
isDblClick = true;
dblClickTimer = setTimeout(function(){
isDblClick = false;
}, 500);
} else {
if (e.touches.length == 1){
clearTimeout(dblClickTimer);
isDblClick = false;
fire(e, 'dblclick');
e.preventDefault();
}
}
longTouchTimer = setTimeout(function(){
fire(e, 'contextmenu');
}, 1000);
fire(e, 'mousedown');
}
function onTouchMove(e){
if (longTouchTimer){
clearTimeout(longTouchTimer);
}
fire(e, 'mousemove');
}
function onTouchEnd(e){
if (longTouchTimer){
clearTimeout(longTouchTimer);
}
fire(e, 'mouseup');
}
function fire(e, name){
var event = new $.Event(name);
event.pageX = e.changedTouches[0].pageX;
event.pageY = e.changedTouches[0].pageY;
$(e.target).trigger(event);
}
if (document.addEventListener){
document.addEventListener("touchstart", onTouchStart, true);
document.addEventListener("touchmove", onTouchMove, true);
document.addEventListener("touchend", onTouchEnd, true);
}
})(jQuery);