【问题标题】:touchmove Event not firing on iPhone Safaritouchmove 事件未在 iPhone Safari 上触发
【发布时间】:2021-04-28 03:10:01
【问题描述】:

touchmove 事件在 iPhone 的 Safari 浏览器上不起作用吗?
我不是在谈论 iOS 应用程序,只是一个普通的旧 HTML 页面,其中包含一些加载到 iPhone 的 Safari 浏览器中的 Javascript 和 jQuery。

我实际上将我的 iPhone 连接到了我的 Mac-mini——它也在运行 Safari,所以我可以在 Mac-Mini 的 Safari 控制台中看到 iPhone 上发生的一切——我的touchstarttouchend 事件确实触发了,但是@ 987654324@ 只是没有回应。

代码如下:

        document.addEventListener("touchstart", onMobileTouchStart, false);
        document.addEventListener("touchmove", onMobileTouchMove, false);
        document.addEventListener("touchend", onMobileTouchEnd, false);


        function onMobileTouchStart(touchStartEvent) {
            console.log("\n==>'onMobileTouchStart'!!!");            
            touchStartEvent.preventDefault();
        }


        function onMobileTouchMove(moveEvent) {
            console.log("\n==>onMobileTouchMOVE'!!!");          
            moveEvent.preventDefault();
        }


        function onMobileTouchEnd(touchEndEvent) {
            console.log("\n==>onMobileTouchEnd'!!!");
        }

我最终想要做的是让自定义的捏缩放类型行为开始,我的理解是这必须在 touchmove 事件中实现 - 所以这就是我问的原因。

除非touchmove 开始玩得很好,否则我看不到任何其他解决方法。

对此有何想法、提示或解决方法?

【问题讨论】:

    标签: javascript safari mobile-safari touch-event touchmove


    【解决方案1】:

    我在 2021 年 5 月看到了同样的问题。如果我在 Google Chrome 上尝试它,我会得到 touchmove 事件,但 Safari 在 14.4.2(最新版本)上,Safari 浏览器会为我提供初始触地事件,但是后续的 touchmove 事件不会提供给我。

    很明显,浏览器正在窃取 touchmove 事件,因为它想要滚动某些东西,并且像往常一样滚动会弄乱一切,因为它是 HTML / JS 规范没有真正涵盖的这些东西之一,因为它很神奇浏览器行为。

    我的身体标签上有一个溢出:隐藏,所以无论如何都不应该有任何滚动。不知道如何修复这个浏览器怪癖,因为 iPad 是一款非常受欢迎的设备,我必须弄清楚如何修复它,但我现在很困惑。

    【讨论】:

    • 仍然无法正常工作。 2021 年 10 月
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2012-08-16
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    相关资源
    最近更新 更多