jquery - iScroll - 保留 native 垂直滚动 - 适用于 iOS,不适用于 Android

标签 jquery android mobile

我正在使用 iScroll.js 滚动移动页面上的项目轮播。我发现以下修复程序可以监听垂直移动并停止 iScroll 脚本控制,让 native 垂直滚动发生:

        onBeforeScrollStart: function(e) {
        try {
            point = e.touches[0];
            pointStartX = point.pageX;
            pointStartY = point.pageY;
        } catch(e) {}
        null;
    },
    onBeforeScrollMove: function(e) {
        try {
            deltaX = Math.abs(point.pageX - pointStartX);
            deltaY = Math.abs(point.pageY - pointStartY);
            if (deltaX >= deltaY) {
                e.preventDefault();
            } else {
                null;
            }
        } catch(e) {}
    }

我正在使用 try{}catch{},因为它在浏览器中测试时出现了一些问题(提示未定义点)。

我遇到的问题是它在 iOS 上运行良好,在多个 i 设备上进行了测试,但在 Android 上却不太好。如果用户尝试垂直滚动页面,首先将手指放在旋转木马上,则页面不会滚动,因为 iScroll 仍具有控制权。

知道如何让它在 Android 上运行,或者有任何指向它可能出错的地方的指示吗?

编辑:

一些调试,我可能发现了为什么这不起作用。当用户在 iOS 上触摸屏幕时,坐标会被更新,但在 Android 上,只会捕获第一组坐标。知道为什么会这样吗?

最佳答案

您的 onBeforeScrollMove 范围内似乎没有“点”。 此外,某些 Android 设备可能会通过多点触控调用点击事件(我无法确认这一点,但由于平台 fragment 化而只能进行推测)

我有一个很好的脚本,我将很快发布它接受点击事件并使用“鼠标”作为触摸的标识符属性模拟一个独特的多点触控事件,这可能对调试有一些帮助。我会尽量在明晚之前将该项目上线。

应该添加一些更新和项目,但这里有一个链接:

https://github.com/skhameneh

编辑:更正,您甚至更新“点”了吗?它似乎在这段代码之外,并在其中进行了更改。如果您发布了其余代码,可能会有帮助。

关于jquery - iScroll - 保留 native 垂直滚动 - 适用于 iOS,不适用于 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929890/

相关文章:

javascript - 使用 jquery 在 body [所有元素] 中搜索类

jquery - 将 Tablesorter 升级为 Mottie fork

android - 基于位置的推送通知 FCM

android - 更改语言的按钮 Flutter

android - Android 上兼容的对象到对象映射器

java - 移动开发——Mono、Java w/J2ObjC 还是原生?

javascript - 使用 getElelementsByClass 翻转多张卡片

javascript - 实时显示日期时间时出现问题(JavaScript/JQuery)

android - 通过更改 Android 中的应用程序语言来更改默认手机语言?

android - 为什么 VTS 因不准确的 adb 错误而失败?