javascript - 停止 Touchscroll 也会阻止点击链接

标签 javascript html touchscreen preventdefault vertical-scrolling

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

(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/

最佳答案

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

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

关于javascript - 停止 Touchscroll 也会阻止点击链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215742/

相关文章:

Javascript:如何通过元素名称而不是 XML 树位置查找子节点?

html - 如何从 Rails 应用程序创建可嵌入的 HTML 表单

javascript - 为什么它说我的对象 "ball"不存在方法draw?

c - 使用腻子

jquery - 尝试用 jQuery 实现滚动惯性

javascript - 了解 JavaScript 运行时

php - 是什么导致 IE8 阻止某些文件下载?

javascript - Node.js Ajax 不断重新加载新页面

PHP 和 SQL : managing log-in via databases

html - 从右到左显示文本