首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS 5上的document.ontouchmove和滚动

iOS 5上的document.ontouchmove和滚动
EN

Stack Overflow用户
提问于 2011-10-18 02:56:44
回答 5查看 62.2K关注 0票数 47

JavaScript5为iOS /Web带来了许多好东西。其中之一是改进的滚动。如果您添加了

代码语言:javascript
复制
-webkit-overflow-scroll:touch;

对于文本区域元素的样式,滚动只需一根手指就可以很好地工作。

但是有一个问题。为了防止整个屏幕滚动,建议web应用程序添加以下代码行:

代码语言:javascript
复制
document.ontouchmove = function(e) {e.preventDefault()};

然而,这会禁用新的滚动。

有没有人有一个很好的方法来允许新的滚动在一个文本区域内,而不是允许整个表单滚动?

EN

Stack Overflow用户

发布于 2013-06-03 21:46:01

Brian Nickel的答案中唯一的问题是(正如user1012566提到的),stopPropagation不能防止当你碰到可滚动的边界时产生气泡。您可以使用以下方法来防止出现这种情况:

代码语言:javascript
复制
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();
});
票数 23
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7798201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档