Javascript jquerymobile+;iScroll,无法向下滚动

Javascript jquerymobile+;iScroll,无法向下滚动,javascript,jquery,jquery-mobile,iscroll4,iscroll,Javascript,Jquery,Jquery Mobile,Iscroll4,Iscroll,我正试图与你融为一体。我知道已经有一个这样做了,但是,我正在避免它,因为它带有输入元素(键入时页面会疯狂地跳跃) 我当前的实现如下所示: -(JSFiddle示例)[] 正如您可能注意到的,除了一个主要的问题外,这一点是完美的: 无法向下滚动。此问题似乎是跨操作系统/浏览器的问题 但是,如果我的I重写了onBeforeScrollStart方法: var scroller = new iScroll('wrapper', { onBeforeScrollStart: null }); 它的效果

我正试图与你融为一体。我知道已经有一个这样做了,但是,我正在避免它,因为它带有输入元素(键入时页面会疯狂地跳跃)

我当前的实现如下所示:

-(JSFiddle示例)[]

正如您可能注意到的,除了一个主要的问题外,这一点是完美的: 无法向下滚动。此问题似乎是跨操作系统/浏览器的问题

但是,如果我的I重写了
onBeforeScrollStart
方法:

var scroller = new iScroll('wrapper', { onBeforeScrollStart: null });
它的效果更好一些。现在,用户可以滚动,但行为会出现故障(响应速度慢),允许用户滚动他想要的高度等等

(不过,这样做似乎只会改变iOS上的情况)


我现在正在寻找这个问题的解决方案,它最好支持iOS5和iOS6,并使用
元素。考虑到iScroll和jQuery Mobile是当今两个主要的框架,这应该是一个非常常见的问题。

我对您的代码进行了一些研究,发现了一些问题和解决方案,请查看

  • 加载jQuery之后,请使用
    jQuery(document).ready()

  • 包装器
    的直接子元素上初始化iScroll似乎比在
    包装器
    上初始化iScroll更合适

  • 我没有通过CSS设置包装高度,而是使用javascript更精确并避免溢出

  • 仅供参考,
    scroll
    已被定义为一个函数。(在小提琴中,您使用了
    滚动
    作为变量)

  • 现在它就像一个符咒


您可以看到此演示:


非常感谢你的努力和帮助,非常非常感谢!您的解决方案解决了最初的问题,但是,只会滚动第一个元素。[](其他内容保留在后台,未滚动)。。也不能选择
元素。我在ScrollStart之前尝试了各种
覆盖,但它们都破坏了您的解决方案..您对如何解决这个问题没有任何想法吗?我被卡住了。不客气,我更新了我的答案,加入了不可选择的输入修复,但是,我看不到你描述的关于第一个元素只被滚动的问题。再次感谢你,该修复工作也很好。在这里,
不可见(它在标题下),但那是可滚动的元素,列表不可滚动。我正在iOS 6和Firefox 16上进行测试。@Zar这是因为您的
h1
位置不正确,并且目前被视为iScroll的可滚动项之一,他应该是
#content
的直接子项。
$(function(){

    var footerHeight = $('[data-role="footer"]').outerHeight(true),
        headerHeight = $('[data-role="header"]').outerHeight(true),
        padding = 15*2; //ui-content padding

   $('#wrapper, #scroller').height( $(window).innerHeight() - headerHeight - footerHeight - padding );

   // To make inputs focusable,
   // you can rebind their touchend's event to trigger their focus

   $('input').on('touchend', function(){
       $(this).focus();
   });

   var iScroller = new iScroll('scroller');

});​
myScroll = new IScroll('#wrapper', { eventPassthrough: true, scrollX: true, scrollY: false, preventDefault: false });