2014-09-26 31 views
1

我正在開發一個Web應用程序與右側的小菜單,我想刷卡進出。輸入類型範圍與hammerjs刷卡檢測不適用於移動safari

所以我包括hammerjs在文檔主體中添加了一個滑動功能,並在左側滑動時滑動了左側滑動菜單,並在右側滑動滑動。奇蹟般有效。

現在我的問題,我也有滑塊()在頁面上,如果我添加hammerjs滑動檢測我不能移動滑塊了。在Firefox上,滑塊變得緩慢並且有時會掛起。

當我刪除hammerjs檢測滑塊按預期工作。有人有線索我怎麼能解決這個問題?

HTML

<div id="container"> 
    <input id="slide" type="range" min="0" max="100" value="100"> 
</div> 
<div id="text"> 
</div> 

JS

var mc = new Hammer.Manager(document.getElementById('container')); 
mc.add(new Hammer.Swipe({ 
    direction: Hammer.DIRECTION_HORIZONTAL 
})); 

var textElement = document.getElementById('text'); 
textElement.innerHTML= 'noSwipe'; 
mc.on('swipe', function (e) { 
    textElement.innerHTML = 'swipe'+e.direction;  
}); 

CSS

#container { 
    width:100%; 
    height:200px; 
    border: 1px solid blue; 
} 

從來就做出a fiddle它顯示了這個問題。

+0

嘗試始終顯示關於代碼的重要部分,即使包含JS小提琴(這可以被刪除,我們將失去對該問題的參考)。 – avcajaraville 2014-09-26 07:49:19

+1

好的謝謝你的更正 – ByteNinja 2014-09-26 12:32:09

回答

2

有同樣的問題,只有幫助我防止觸摸事件的冒泡。

var stop = function(event) { 
    event.stopPropagation(); 
}; 
$element.on('touchmove', stop); 
$element.on('touchstart',stop); 
$element.on('touchend', stop); 

其實它足以防止'touchmove',但我添加了'開始'和'結束'的可靠性。

+0

這對我有效! – claytronicon 2016-10-06 17:32:15