2012-02-22 62 views
2

我是新StackOverflow上,但谷歌搜索;-)的PhoneGap + JQM的Android滚动已发行

我使用深化发展的PhoneGap + jQuery Mobile的组合web应用程序时,我看了很多帖子,我有一个问题在Android上滚动。我的页面看起来是这样的:

<div data-role="page" id="categories"> 
<div data-role="header">...</div> 

<div data-role="content" style="padding:0 15px;"> 
<div id="categories_canvas" style="overflow-y:scroll;">...</div> 
</div> 

<div data-role="footer">...</div> 
</div> 

我有我的JS:

var height_canvas = $(window).height() - $("div.ui-footer").outerHeight() - $("div.ui-header").outerHeight() 
$("#categories_canvas").height(height_canvas); 

设置高度的作品,但overflow-y:scroll不会对我的HTC Desire(安卓2.3.3)和HTC感觉( Android 3.不知道具体是什么),但在Samsung Galaxy Nexus(Android 4.0.2)上效果很好。

我不知道为什么,我寻找解决的办法......我做了一些测试,我发现,如果我不使用溢出,页面滚动,但我的页脚是不固定的屏幕底部,我会固定的头/内容/页脚与滚动的内容。

编辑:好的,我读了很多互联网上的页面,似乎溢出,不支持,我会(和许多其他人......)。所以我决定把我的菜单链接放在标题上,内联标题标题(如iOS上的“返回”按钮)。我只有三页,实际上我有两个链接,所以把它们放在标题上对我来说是另一种选择。太遗憾了 !但它的工作原理,这是必不可少的;-)

回答

1

如果你真的想要滚动,使用iscroll 4插件。它适用于许多操作系统,它加快了开发速度,并允许您进行大量的控制。 http://cubiq.org/iscroll-4

2

我对我的HTC Desire同样的问题。试试这个:

function set_scrollable() { 
    if(isTouchDevice()){ 

     var scrollStartPosY=0; 

     document.getElementById("categories_canvas").addEventListener("touchstart", function(event) { 
      scrollStartPosY=this.scrollTop+event.touches[0].pageY; 
      event.preventDefault(); 
     },false); 

     document.getElementById("categories_canvas").addEventListener("touchmove", function(event) { 
      this.scrollTop=scrollStartPosY-event.touches[0].pageY; 
      event.preventDefault(); 
     },false); 
    } 
} 

function isTouchDevice(){ 
     try{ 
      document.createEvent("TouchEvent"); 
      return true; 
     }catch(e){ 
      return false; 
     } 
}