2013-05-22 40 views
1

我使用Hammer.js在這裏找到:
http://eightmedia.github.io/hammer.js/在計算機上禁用HammerJS滑動和拖動事件? (即鼠標事件禁用?)

和我建立/創建錘對象是這樣的:

var hammertime = Hammer(document.body) 
         .on("pinchin drag swipe", function(event) { 
         var alpha_value = $("#collide_alpha").slider("option", "value"); 
         var beta_value = $("#collide_beta").slider("option", "value"); 
         if(alpha_value < 50) { 
          $("#collide_alpha").slider("value", ~~(+alpha_value+(event.gesture.distance/30))); 
         } else if(alpha_value <= 100) { 
          $("#collide_alpha").slider("value", ~~(+alpha_value-(event.gesture.distance/30))); 
         } 
         if(beta_value < 50) { 
          $("#collide_beta").slider("value", ~~(+beta_value+(event.gesture.distance/30))); 
         } else if(beta_value <= 100) { 
          $("#collide_beta").slider("value", ~~(+beta_value-(event.gesture.distance/30))); 
         } 
         }); 

後,我試着這樣做:

// Try to disable the mouse movements on computer 
hammertime.STOP_MOUSEEVENTS = true; 
hammertime.NO_MOUSEEVENTS = true; 

但是,這並不工作,所以我應該怎麼禁用只是計算機的事件?但讓它們在iPhone和Android上處於活動狀態。我現在不關心Windows 8觸摸屏,所以我不介意它不適合那些。

回答

2

我通常嘗試並檢測設備在觸發錘之前是否是觸摸屏。它,而不是當你不

其中最支持的方式關閉這樣更好,當你需要它只是負載

var is_touch_device = 'ontouchstart' in document.documentElement; 

然後只是包裝你的錘子初始化在

if(is_touch_device){ 
    // hammer stuff 
} 

或者如果你只關心一些設備,你可以嗅探用戶代理,但這可能有點笨重,並且容易丟失東西。

+0

偉大的,似乎工作!謝謝 – dan2k3k4

+1

這個項目沒有問題,祝你好運 –

1

我使用Modernizr的決定我是否應該運行錘:

 if (Modernizr.touch) 
    { 
     $("#cr-stage").hammer().on("swipeleft swiperight swipeup swipedown doubletap pinchin", gesture); 
     $("#cr-stage").hammer().on("release", releaseGesture); 
    } 

這是更可靠的比用戶代理嗅探。