简体   繁体   English

仅在触摸时触发Javascript事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM