【问题标题】:Stopping Touchscroll also prevents clicking links停止 Touchscroll 还可以防止单击链接
【发布时间】:2015-03-23 16:46:22
【问题描述】:

当有人试图在移动菜单中进行触摸滚动时,我得到了这段代码,它应该禁止整个页面滚动。不幸的是,它也阻止了点击链接(仅在触摸屏上)。我需要确保链接仍然可以点击。

(function(){
function isTouchDevice(){
try{
document.createEvent("TouchEvent");
return true;
}catch(e){
return false;
}
}
function touchScroll(id){
if(isTouchDevice()){ //if touch events exist...
var el=document.getElementById(id);
var scrollStartPos=0;
document.getElementById(id).addEventListener("touchstart", function(event) {
scrollStartPos=this.scrollTop+event.touches[0].pageY;
event.preventDefault();
},false);
document.getElementById(id).addEventListener("touchmove", function(event) {
this.scrollTop=scrollStartPos-event.touches[0].pageY;
event.preventDefault();
},false);
}
}
//On page load
touchScroll('mainmenu-mobile')
})();

从这里获取代码:http://chris-barr.com/2010/05/scrolling_a_overflowauto_element_on_a_touch_screen_device/

http://jsfiddle.net/nv3vj29f/

【问题讨论】:

    标签: javascript html touchscreen preventdefault vertical-scrolling


    【解决方案1】:

    在 touchstart 事件中,您应该删除 event.preventDefault() 行。 这会阻止点击链接。

    不用说,您应该将 event.preventDefault() 保留在 touchmove 上,因为这会阻止滚动。

    【讨论】:

      猜你喜欢
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      相关资源
      最近更新 更多