【问题标题】:jQuery mobile + iScroll, cannot scroll downjQuery mobile + iScroll,无法向下滚动
【发布时间】:2012-10-20 09:53:01
【问题描述】:

我正在尝试将jQuery MobileiScroll 4 集成。我知道已经有一个 project 可以执行此操作,但是,由于 bug 带有输入元素(键入时页面像疯了一样跳跃),我正在避免它。

我当前的实现如下所示:

http://jsfiddle.net/AqHsW/ - (JSFiddle 示例) [Alternative mirror]

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

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

var scroller = new iScroll('wrapper', { onBeforeScrollStart: null });

它工作得更好一些。现在可以滚动,但行为会出现故障(以及响应缓慢),允许用户滚动他想要的高度等等。

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

我现在正在寻找解决此问题的方法,最好支持 iOS 5 和 6,以及使用 <input> 元素。考虑到 iScroll 和 jQuery Mobile 是当今的两个主要框架,这应该是一个很常见的问题。

【问题讨论】:

    标签: javascript jquery jquery-mobile iscroll4 iscroll


    【解决方案1】:

    你可能会看到这个演示:http://lab.cubiq.org/iscroll5/demos/event-passthrough/

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

    【讨论】:

      【解决方案2】:

      我用你的代码玩了一下,找到了一些东西和一个解决方案,检查jsfiddle

      • 自从加载jQuery后,使用jQuery(document).ready()

      • wrapper 的直接子元素而不是wrapper 上初始化iScroll 似乎更合适。

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

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

      • 现在它就像一个魅力!


      $(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');
      
      });​
      

      【讨论】:

      • 非常感谢您的努力和帮助,非常非常感谢!您的解决方案解决了最初的问题,但是,只会滚动第一个元素。 [jsfiddle.net/NUK88/4](其他内容留在后台,未滚动)..也不能选择<input>元素。我尝试了各种 onBeforeScrollStart 覆盖,但它们都破坏了您的解决方案..
      • 您对如何解决这个问题没有任何想法?我被困住了。
      • 欢迎您,我更新了我的答案以包括不可选择的输入修复,但是,我看不到您描述的关于仅滚动第一个元素的其他问题。
      • 再次感谢您,该修复也很完美。 jsfiddle.net/6jXfy 在这里,<h1> 不可见(它在标题下方),但这是可滚动元素,列表不可滚动。我正在 iOS 6 和 Firefox 16 上进行测试。
      • @Zar 那是因为你的h1 不在正确的位置,并且目前被认为是iScroll 的可滚动项之一,他应该是#content 的直接子项。 jsfiddle.net/VDrUT/3
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多