jquery scrolltop и scrollleft работают отлично, но на iphone все они прокручивают другую панель в исходное положение?

Я использую следующий код JQuery для прокрутки до определенной позиции на странице по вертикали. Это работает абсолютно нормально во всех браузерах и не влияет на положение горизонтальной прокрутки, однако, когда я пытаюсь сделать это на iphone (на мобильном сафари), в дополнение к вертикальной прокрутке, он также прокручивается по горизонтали до упора влево. Точно так же, если я использую scrollleft, он пойдет в правильное место по горизонтали, но вернется в верхнюю часть страницы. Он отлично работает во всем остальном, и я нигде не могу найти ссылки на эту проблему, я был бы безмерно благодарен, если кто-нибудь, кто сталкивался с этим, мог бы помочь мне, потому что я в замешательстве! Я даже не могу сделать один за другим (scrollleft, затем scrollright), поскольку тот, который я делаю последним, отменяет положение прокрутки, установленное предыдущим.

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

Большое спасибо за Вашу помощь!

Дейв

1 ответ

Возможно, вы могли бы сначала получить текущее значение scrollLeft (или scrollTop, если вы анимируете scrollLeft), а затем анимировать scrollLeft и scrollTop, когда пользовательские агенты сообщают вам, что это iphone

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 (прокрутка)

Другие вопросы по тегам