考虑使用触摸事件。并支持跨浏览器(Firefox,Chrome,Edge)。
解决方法很简单,处理Touch Events并防止默认值。
考虑这个例 -
function startup() {
var el = document.getElementsByTagName("canvas")[0];
el.addEventListener("touchstart", handleStart, false);
el.addEventListener("touchend", handleEnd, false);
el.addEventListener("touchcancel", handleCancel, false);
el.addEventListener("touchmove", handleMove, false);
log("initialized.");
}
element.addEventListener('touchstart', function(e){
var touchobj = e.changedTouches[0] // reference first touch point (ie: first finger)
startx = parseInt(touchobj.clientX) // get x position of touch point relative to left edge of browser
statusdiv.innerHTML = 'Status: touchstart<br> ClientX: ' + startx + 'px'
e.preventDefault()
}, false)
来源:MDN - Touch Events
的触摸事件简单的演示可以发现here(mdn)或here(jsdfiddle)
检查这个例子将更加完整(Reference/Demo) -
<div class="box" id="box1">
<h3> Touch Me! </h3>
</div>
<h3 id="statusdiv">Status</h3>
<script>
window.addEventListener('load', function(){
var box1 = document.getElementById('box1')
var statusdiv = document.getElementById('statusdiv')
var startx = 0
var dist = 0
box1.addEventListener('touchstart', function(e){
var touchobj = e.changedTouches[0] // reference first touch point (ie: first finger)
startx = parseInt(touchobj.clientX) // get x position of touch point relative to left edge of browser
statusdiv.innerHTML = 'Status: touchstart<br> ClientX: ' + startx + 'px'
e.preventDefault()
}, false)
box1.addEventListener('touchmove', function(e){
var touchobj = e.changedTouches[0] // reference first touch point for this event
var dist = parseInt(touchobj.clientX) - startx
statusdiv.innerHTML = 'Status: touchmove<br> Horizontal distance traveled: ' + dist + 'px'
e.preventDefault()
}, false)
box1.addEventListener('touchend', function(e){
var touchobj = e.changedTouches[0] // reference first touch point for this event
statusdiv.innerHTML = 'Status: touchend<br> Resting x coordinate: ' + touchobj.clientX + 'px'
e.preventDefault()
}, false)
}, false)
</script>
个
参考文献:
触摸事件,希望它可以帮助。
哪个版本的FF? –
最新或每晚。 –
这只是一个猜测,因为我无法测试这个解决方案,但可以添加类似'overflow:hidden;'的东西来解决这个问题?在这种情况下,你可以拥有一个锁定图标,当按下某个类或某个按钮时可以切换它。 –