我在适用于 iOS 和 Android 的移动网站上使用最出色的 javascript 工具 iScroll4 http://cubiq.org/iscroll-4 。这是我的布局的样子:
水平滚动区域使用 iScroll4 并进行以下设置:
var myScroll = new iScroll('frame', { hScrollbar: false, vScrollbar: false, vScroll: false })
水平滚动部分效果很好。当用户将手指放在水平滚动区域上尝试向上或向下滚动页面时会发生此问题。所以我需要原生垂直滚动,和 iScroll 在同一区域水平滚动。
到目前为止我已经尝试过:删除 iScroll 代码中的 e.preventDefault() (允许本机滚动,但在两个轴上)。删除 e.preventDefault() 然后禁用水平滚动页面宽:
var touchMove;
document.ontouchstart = function(e){
touchMove = e.touches[0];
}
document.ontouchmove = function(e){
var theTouch = e.touches[0] || e.changedTouches[0];
var Xer = rs(touchMove.pageX - theTouch.pageX).toPos();
var Yer = rs(touchMove.pageY - theTouch.pageY).toPos();
touchMove = theTouch;
if(Yer > Xer){ e.preventDefault(); }
}
这似乎什么也没做。如何在不丢失 iScroll 的水平滚动的情况下允许在水平滚动区域中进行原生垂直滚动?我真的很难过。提前致谢。
(仅用于记录 rs(foo).toPos() 是一个使 foo 成为正数的函数,而不管其值如何)。