仅在触摸时触发Javascript事件

时间:2014-01-13 16:44:59

标签: javascript jquery touch hammer.js

我试图仅在触摸时触发一些JS事件(用于显示或不显示响应项目的侧边菜单)。我看过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;
                });

一切似乎都很好,除了它不仅会触发触摸事件,还会触发鼠标事件。如果我尝试使用鼠标重现swype,它也会起作用......我不喜欢它:)

所以,我想知道如何才能做到这一点,只在触摸动作上发射事件。

1 个答案:

答案 0 :(得分:1)

Hammer.js将始终使用鼠标事件。理想情况下,我尝试使用Modernizr检测触摸或使用JavaScript然后初始化锤码。

if (Modernizr.touch) { 
    //your hammer code
}

或使用普通的javascript。

var supportsTouch = 'ontouchstart' in document.documentElement;

if(supportsTouch){
  // your hammer code
}