2012-01-15 62 views
1

使用Prototype Javascript框架,您可以編寫下面的代碼來偵聽窗口滾動事件。當您返回頁面時,iOS瀏覽器會丟失窗口滾動事件

document.observe(
    'dom:loaded', 
    function() { 
     Event.observe(
      window, 
      'scroll', 
      function(event) { 
       console.info(event); 
      } 
     ); 
    } 
); 

在iOS的Safari瀏覽器中,當您離開頁面並重新啓動時,滾動處理程序不再被觸發。 Android的瀏覽器沒有這個問題。有人提交了solution for jQuery,但我使用Prototype。你如何確保你總是用Prototype來聽滾動事件?

+0

從我讀到的鏈接修復它只適用於jQuery Mobile,它根本不會離開頁面,而是通過AJAX更新頁面。既然你沒有使用它,並且實際上離開了頁面,我認爲這有一個不同的原因。 – clockworkgeek 2012-01-16 12:08:27

回答

0

不確定Prototype中的細節是什麼,但就移動瀏覽器對傳統滾動事件的支持而言,它不存在。當滾動確定結束時,你會得到一個滾動事件,我發現它是尷尬的。如果您深入瞭解jQueryMobile源代碼,您將看到他們如何處理它。例如固定位置的工具欄。只要觸發事件發生,他們就會隱藏它們。他們這樣做是因爲他們沒有具體的方式來確定應用程序是否正在滾動。由於視圖正在滾動時沒有事件被觸發,所以他們不知道如何重新定位固定的工具欄。一旦滾動結束事件觸發或touchend/touchstop/touchcancel事件觸發,它們會在正確的位置重新顯示工具欄。

+0

我知道iOS和Android上的滾動事件不會觸發,直到用戶停止滾動。我不在乎這個問題。我只關心它何時會在iOS返回頁面時完全停止滾動事件。 – JoJo 2012-01-18 07:00:15