Eri*_*vig 10 javascript safari mobile-safari ios popstate
在iOS 7 Safari中,现在有两种向后/向前导航的方式 - 使用底部的传统后退/前进按钮箭头或从屏幕边缘滑动.我正在使用动画在我的ajax应用程序中的页面之间进行转换,但如果用户通过边缘滑动导航,我不想触发该转换,因为这是一个动画本身.
但是,对于这两种类型的导航,popstate事件对象看起来都是相同的 - 有没有办法区分这两种类型的用户导航,以便我们可以做出相应的响应?
更新:我能够使用(似乎是)iOS7 Safari中的错误来正确检测边缘滑动与后退按钮点击.问题在于,当使用边缘滑动(但是touchstart和touchmove)时,触摸事件不会被触发(直到下一个触摸事件).所以我设置了一个shouldAnimate标志并在touchmove上禁用它 - 然后如果标志被禁用并且popstate发生,我知道这是一个边缘滑动.
它在99%的时间是正确的 - 唯一可能失败的时间是用户边缘部分滑动但然后放开并让当前页面快速恢复到位(此时我的标志仍将被禁用)然后点击后退按钮(不触发任何触摸事件).为了处理最后的[边缘]情况,我在touchmove上设置了一个定时器,以便在50ms后重新启用该标志.
是的它是"脏"但是现在几乎在每种情况下它都能得到我想要的东西所以我很好 - 直到Apple修复了这个bug,但希望它们也能在popstate事件对象中提供一个告诉我们的指示器它是什么样的导航.
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |