2011-09-16 86 views
0

我正在研究jQuery的移動應用程序,並遇到了一些問題;我想使用jquery的animate()進行應用頁面的「回頁首」。如何阻止Android的瀏覽器滾動回來

以下代碼片段在除我的測試瀏覽器之外的所有應用程序中都很適用。 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)什麼導致Android瀏覽器回滾和/或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; 
}); 

仍然好奇,爲什麼Android瀏覽器要在原來的形式回到錨滾動。

+0

它工作嗎?我有同樣的問題,想知道你是否找到了更好的解決方案,或者如果這是完美的。乾杯 – asheinfeld

+0

我沒有看到任何更好的;這是不完美的,但它在當時需要我的工作。如果你找到了更好的解決方案,我很樂意聽到它。 :) – psema4