【发布时间】:2014-02-03 10:28:33
【问题描述】:
我正在使用 jQuery、greensock 和 scollorama 开发一个单页网站。
它并不完全需要支持移动浏览器,但如果它可以在 iPad 上运行那就太好了 - 因此我开始在各种手机和平板电脑上进行测试。
我遇到的问题是 scrollorama 依赖于经常触发的滚动事件,因为这是动画所挂钩的 - 但是,当使用触摸屏时,浏览器似乎只在您启动时触发滚动事件拖动和停止时 - 这在 Opera Mini、Chrome、Safari、FF Mobile 中是一致的。
为了让我的页面至少部分工作,我需要想出一些东西来让我更频繁地触发滚动事件 - 有人知道怎么做吗?
P.S 我已经尝试按照 scrollorama 文档的建议使用 iScroll,但这并没有奏效,反而破坏了动画并使滚动变得不可能——我确信插件本身可以工作,但它似乎不能很好地与我已经得到了什么。我正在寻找比插件更少的东西,只是一个 sn-p 来理想地触发滚动事件。
TL;DR
带有触摸屏的设备在拖动过程中似乎只触发一次或两次 javascript 滚动事件。我可以在 JS 或 jQuery 中做一个简单的补丁来更频繁地触发滚动事件吗?
更新:我已经尝试像这样连接到触摸事件并触发浏览器滚动:
$(document).on('touchstart touchend touchmove', function(){
$(window).trigger('scroll');
});
这似乎在使用 Firefox 的 Android 上给了我更好的结果,尽管我认为它没有像我希望的那样频繁地触发它总比没有好。
我会在其他浏览器中测试,看看是否有帮助。
更新 2:
上面的代码对 Android 上的 FF 有很大帮助,但对 iPhone 没有帮助。我尝试为 iPhone 触发的手势事件添加处理程序,但没有改变。
$(window).on('touchstart touchend touchmove mousewheel touchcancel gesturestart gestureend gesturechange orientationchange', function(){
//alert($(window).scrollTop());
$(window).trigger('scroll');
});
【问题讨论】:
标签: javascript android ios scroll