我有一个名为“divEventScroll”的可滚动 div。当使用 javascript/jquery 将数据附加到此 div 中时,预计滚动条将保持在同一位置,即 scrollTop() 保持不变。
这在具有 iOS 5 及更低版本的 iOS 设备中完美运行。但是,在 iOS6+ 中,一旦检测到滚动,div 就会向右滚动到 div 的开头。
我已经在带有 ios 6.0.1 的 iPad3 中解决了这个问题(不是以一种非常好的方式)。
但是,它似乎在 macbook 中不起作用,因为它仅在触发滚动惯性事件后才检测到滚动。
这是我用于 iPad 的代码:(有效)
$('body').on('touchmove',function(e){
if(navigator.userAgent.match(/(iPad|Version\/6.0)/gi)){
if($('#divEventScroll').has($(e.target)).length && fromNextEvents){
if($('#divEventScroll').scrollTop()<scrollPos){
fromNextEvents=false;
$('#divEventScroll').scrollTop(scrollPos);
}
}
}
});
我用于 Macbook Pro 的代码:(当我期望它时不会被触发)
$('body').scroll(function(){
if(navigator.userAgent.match(/(Macintosh&Version\/6.0)/gi)){
if(fromNextEvents){
if($('#divEventScroll').scrollTop()<scrollPos){
fromNextEvents=false;
$('#divEventScroll').scrollTop(scrollPos);
}
}
}
});
非常感谢您对此的帮助。
编辑:在我希望此代码工作的情况下,fromNextEvents 将设置为 true。
EDIT2:我意识到我不太清楚。(完全!我忘了添加这个):当我开始向下滚动 div 以查看附加在底部的内容时,而不是正常向下滚动,div 直接向上滚动到顶部,然后从那里继续向下滚动. 这很奇怪:S