Html iOS8 Safari-webkit溢出滚动:触摸;问题

Html iOS8 Safari-webkit溢出滚动:触摸;问题,html,ios,css,Html,Ios,Css,因此,我们正在为一个客户端构建这个web应用程序,该客户端在Safari的iOS7上运行得非常好。但当我们在iOS8中查看该应用程序时,它有一些巨大的bug 如果用户打开并关闭侧边栏,则中的内容将消失(覆盖部分) 有些按钮因任何原因停止工作。() 当我们删除-webkit溢出滚动时:触摸从容器(保存所有内容的div)中,一切都像过去一样完美地工作 有什么想法吗?我也有同样的问题!到目前为止,我无法找到真正的解决方案,但有一个不太理想的解决办法: 假设#container具有-webkit o

因此,我们正在为一个客户端构建这个web应用程序,该客户端在Safari的iOS7上运行得非常好。但当我们在iOS8中查看该应用程序时,它有一些巨大的bug

  • 如果用户打开并关闭侧边栏,则
    中的内容将消失(覆盖部分)
  • 有些按钮因任何原因停止工作。(
当我们删除
-webkit溢出滚动时:触摸从容器(保存所有内容的div)中,一切都像过去一样完美地工作


有什么想法吗?

我也有同样的问题!到目前为止,我无法找到真正的解决方案,但有一个不太理想的解决办法:

假设#container具有
-webkit overflow scrolling:touch
属性集,这个jQuery应该可以帮助您:

$('#container').css('-webkit-overflow-scrolling','auto');
或对于javascript(未经测试):

这将禁用页面上的平滑轮盘样式滚动。所以这并不理想,但是你的页面现在应该可以正确滚动了

编辑: 通过进一步的研究,我们发现了一种更简单的方法来解决这个问题,同时保持平滑的触摸滚动。假设您有
-webkit溢出滚动:触摸css中的某个地方,您可以在JS中“切换”它。我不确定你有什么可以显示/隐藏菜单,但希望你能利用它

function toggleMenu(){
    $('#container').css('-webkit-overflow-scrolling','auto');

    //...Existing code

    setTimeout(function() {
        $('#container').css('-webkit-overflow-scrolling','touch');
    },500);
}

没有设置超时,这对我来说不起作用。希望这能帮助您或其他人解决问题。

我在iOS8中遇到了一个问题,即绑定到click事件的所有按钮都不能正常工作。一般来说,我们会有300毫秒的延迟,但在某些情况下,我需要按下几次以上才能触发它

所以我也找到了这个对我有效的解决方案。通过单击添加touchend

button.on('click touchend', function(event) {
  // this fires twice on touch devices
});
你可以看到他们在这里讨论的论坛


我希望这对你有所帮助。

你的侧边栏有没有可能用CSS动画来制作动画

我在Cordova网络应用程序中也有同样的错误。经过一些实验,我发现问题是由父级
(侧边栏)引起的,它通过css动画设置动画,并具有属性
动画填充模式:forwards

删除此属性解决了问题并恢复了预期的
-webkit溢出滚动:touch
行为

我的答案是:

$('#container').css('-webkit-overflow-scrolling','auto');
以前的解决方案不起作用:

document.getElementById('container').style.webkitOverflowScrolling = 'auto';

可能是好听音乐的复制品。希望苹果和/或webkit的人知道这个问题。对我来说,这个选项不起作用。我想尽量避免使用js编写修复程序。当其父元素具有绝对位置或相对位置时,我的容器get的内容具有类似的行为。如果没有这种定位,平滑滚动效果很好。如能进一步讨论,将不胜感激。:)到目前为止,我一直坚持使用这个解决方案,还没有尝试过使用css。其他地方有人提到使用
transform3d(0,0,0)
,但这对我不起作用。你可能想试试。对不起,我帮不上忙了。在苹果自己解决问题之前,这是一个暂时的解决方案。谢谢你的回答,拯救了我的培根!
document.getElementById('container').style.webkitOverflowScrolling = 'auto';