jquery scrolltop и scrollleft работают отлично, но на iphone все они прокручивают другую панель в исходное положение? - PullRequest
3 голосов
/ 31 января 2011

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

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

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

Дейв

1 Ответ

0 голосов
/ 29 июля 2012

возможно, вы могли бы сначала получить текущее значение 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 (scroll)

...