2013-03-12 65 views
1

我有一個跨瀏覽器和跨平臺的web應用程序。在iPhone上,我設法使用$(document).scrollTop(0)隱藏地址欄;jquery:iphone 5 safari上的scrollTop問題當在地址欄上點擊

下面是執行我想要做的事情的代碼片段。

$(window).ready(function(){ 
$(window).scroll(function(){ /*detect scroll event*/ 
    setTimeout("ScrollWindowToTop();",0); 
}); 
}); 
function ScrollWindowToTop(){ 
bodyelem=$("html,body"); /*i have tried this out with document,window, html, body*/ 
$(bodyelem).scrollTop(50); 
} 

我需要它在下列情況下工作: 1.當用戶物理滾動頁面 2.當頁面目前處於另一個滾動位置,當我點擊狀態欄,使地址欄可見,上面的函數被調用,它隱藏地址欄。

上述場景完全在iPhone 4S中實現。然而,第二種情況在iPhone 5中失敗慘重。

有沒有人有線索可以在這裏做什麼?編輯: 我做了一些玩的代碼。在函數ScrollWindowToTop(),如下

function ScrollWindowToTop(){ 
    document.body.scrollTop=50; 
} 

但是我已經編輯它,如果我打印在控制檯的document.body.scrollTop的值時,它顯示該值作爲0知道爲什麼Safari在iPhone5的是不是修改這個屬性的值?

+0

我也試過scrollTo()和window.top.scroll(x,y),而不是scrollTop。但他們不適用於方案2中的iphone5 :( – imbecile 2013-03-12 09:50:40

回答

1

好吧,所以我發現了一個骯髒的修復。

$('body').on('touchstart', function (e){ 
    if (!$('.activeScroll').has($(e.target)).length){ 
    ScrollWindowToTop(); 
    } 
}); 

我只有一對夫婦的我的網頁上滾動的元素,所以我加入了一個名爲「activeScroll」可滾動元素類。如果在任何不可滾動的元素上檢測到'touchstart',則會強制頁面向上滾動。因此,如果地址欄決定是討厭的自我而不是隱藏,頁面上任何地方的觸摸事件都會強制它恢復。進入厄運之地。