JavaScript5为iOS /Web带来了许多好东西。其中之一是改进的滚动。如果您添加了
-webkit-overflow-scroll:touch;对于文本区域元素的样式,滚动只需一根手指就可以很好地工作。
但是有一个问题。为了防止整个屏幕滚动,建议web应用程序添加以下代码行:
document.ontouchmove = function(e) {e.preventDefault()};然而,这会禁用新的滚动。
有没有人有一个很好的方法来允许新的滚动在一个文本区域内,而不是允许整个表单滚动?
发布于 2013-06-03 21:46:01
Brian Nickel的答案中唯一的问题是(正如user1012566提到的),stopPropagation不能防止当你碰到可滚动的边界时产生气泡。您可以使用以下方法来防止出现这种情况:
elem.addEventListener('touchstart', function(event){
this.allowUp = (this.scrollTop > 0);
this.allowDown = (this.scrollTop < this.scrollHeight - this.clientHeight);
this.prevTop = null;
this.prevBot = null;
this.lastY = event.pageY;
});
elem.addEventListener('touchmove', function(event){
var up = (event.pageY > this.lastY),
down = !up;
this.lastY = event.pageY;
if ((up && this.allowUp) || (down && this.allowDown))
event.stopPropagation();
else
event.preventDefault();
});https://stackoverflow.com/questions/7798201
复制相似问题