2011-09-16 3 views
0

jquery-mobile 앱에서 일하고 있는데 약간의 문제가 있습니다. jquery의 animate()를 사용하여 내 앱 페이지의 "맨 위로 돌아 가기"라는 부드러운 스크롤을 사용하고 싶습니다.Androids 'Browser가 뒤로 스크롤하는 것을 멈추는 방법

다음 코드 스 니펫은 테스트 브라우저 중 하나를 제외하고 모두 훌륭하게 작동합니다. Chrome & 데스크톱의 Firefox, iPhone의 Safari 및 Android의 Firefox Beta 모두 좋습니다. 기본 Android 브라우저 (webkit-mobile IIRC)는 애니메이션이 완료되면 앵커로 다시 스크롤합니다.

$("a[href='#top']").live('click', function() { 
    $("body").animate({ scrollTop: 0 }, "slow", function() { 
     // anim complete 
     setTimeout(function() { // not needed, attempt to brute-force 
      window.scrollTo(0,0); 
      alert('foo'); // <- Android scrolls back to anchor after showing alert 
     }, 50); 
    }); 
}); 

누구나 a) 안드로이드 브라우저가 뒤로 스크롤하거나 b) 해결 방법을 제시 할 수 있다고 제안 할 수 있습니까? 차이점이 있다면 현재 테스트중인 기기에서 Android 2.3.2를 실행하고 있습니다.

답변

0

관련없는 문제에 대한 문서를 읽으면서이 상황에 맞게 설계된 $.mobile.silentScroll() 메서드를 발견했습니다. 안드로이드 브라우저는 원래의 형태로 다시 앵커로 스크롤하고 싶은 이유에

function scrollToTop() { 
    var scrollPos = $(document).scrollTop(); 
    scrollPos -= 60; 
    if (scrollPos < 1) { scrollPos = 1; } 
    $.mobile.silentScroll(scrollPos); 
    if (scrollPos > 1) { setTimeout(scrollToTop, 60); } 
} 

$("a[href='#top']").live('vclick', function() { 
    scrollToTop(); 
    return false; 
}); 

여전히 호기심 :

은 여기 내 초기 뇌사 해결 방법입니다.

+0

작동 했습니까? 나는 똑같은 문제를 겪고 있으며 더 나은 해결책을 찾았는지 아니면이 것이 완벽한지 알고 싶습니다. 건배 – asheinfeld

+0

나는 더 나은 것을 보지 못했습니다. 이것은 어떤 수단으로도 완벽하지는 않지만, 당시에 내가 필요로했던 것에 효과가있었습니다. 당신이 더 나은 해결책을 찾으면 그것에 대해 듣고 싶습니다. :) – psema4