[英]Trigger Javascript events only on touch
I'm trying to trigger some JS events only on touch (for showing or not a side menu on a responsive project). 我试图仅在触摸时触发一些JS事件(用于在响应项目中显示或不显示侧面菜单)。 I've looked at Hammer.js, followed the basics and here is what I come of with :
我查看了Hammer.js,并遵循了基础知识,这就是我的想法:
var $mainPage = $('#main-page');
var drawer = 0;
$mainPage.hammer()
.on('swiperight', function(e){
if(drawer){
return true;
}
$mainPage.css({'transform': 'translateX(260px)', '-ms-transform': 'translateX(260px)', '-webkit-transform': 'translateX(260px)'});
drawer = 1;
})
.on('swipeleft', function(e){
if(!drawer){
return true;
}
$mainPage.css({'transform': 'translateX(0)', '-ms-transform': 'translateX(0)', '-webkit-transform': 'translateX(0)'});
drawer = 0;
});
Everything seems to be fine except it's not only triggering on touch event but with mouse events too. 一切似乎都很好,除了它不仅在触摸事件上触发而且在鼠标事件上触发。 If I try to reproduce the swype with my mouse, it works too... And I don't like it :)
如果我尝试用鼠标复制swype,它也可以工作...而且我不喜欢它:)
So, I was wondering how I could do it, only firing events only on touch actions. 因此,我想知道如何才能做到,仅在触摸操作时才触发事件。
Hammer.js will always work with mouse events. Hammer.js将始终与鼠标事件一起使用。 Ideally I try to detect touch with Modernizr or using JavaScript and then initialize hammer code.
理想情况下,我尝试使用Modernizr或JavaScript检测触摸,然后初始化锤码。
if (Modernizr.touch) {
//your hammer code
}
OR using plain javascript. 或使用普通的javascript。
var supportsTouch = 'ontouchstart' in document.documentElement;
if(supportsTouch){
// your hammer code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.