3

我正在使用以下 jquery 代码垂直滚动到页面上的某个位置。这在所有浏览器上都可以正常工作,并且不会影响水平滚动位置,但是当我在 iphone(移动 safari 上)上尝试它时,除了垂直滚动到正确的位置之外,它还会一直水平滚动到左侧。同样,如果我使用 scrollleft,它会水平转到正确的位置,但会返回页面顶部。它在其他所有方面都可以正常工作,我在任何地方都找不到有关此问题的任何参考,如果遇到此问题的任何人可以帮助我,我将不胜感激!我什至不能一个接一个地做(向左滚动然后向右滚动),因为我最后做的任何一个都会取消前一个设置的滚动位置。

if($.browser.opera)
{
    $('html').animate(
    {
        scrollTop: yscroll - 10
    }, 
    1000);
}
else
{
    $('html, body').animate(
    {
        scrollTop: yscroll - 10
    }, 
    1000);
}

非常感谢你的帮助!

戴夫

4

1 回答 1

0

也许您可以先获取当前的 scrollLeft(或者,如果您为 scrollLeft 设置动画,则为 scrollTop)值,然后当用户代理告诉您这是一部 iphone 时为 scrollLeft 和 scrollTop 设置动画

var isiPhone = navigator.userAgent.toLowerCase().indexOf("iphone");
var isiPad = navigator.userAgent.toLowerCase().indexOf("ipad");
var isiPod = navigator.userAgent.toLowerCase().indexOf("ipod");

这不是最好的,因为你会有不同的动画,但至少你会在同一个位置结束

iphone/pad iPad / jQuery.animate(scroll) 问题存在一些问题

于 2012-07-29T16:26:23.957 回答