在ios8的webview中,当手指滑动元素到webview边界外以后松开,不能触发touchend事件,什么原因?怎么解决?

发布于 2022-09-01 12:50:36 字数 1564 浏览 14 评论 0

在ios8的webview中,当手指滑动元素到webview边界外以后松开,不能触发touchend事件,但可以监听到touchmove事件, ios8以下的版本也没有问题

图片描述

    <div class="outer">
        <div class="inner">
            在ios8 的webview中,当手指滑动到webview边界外松开后,js不能监听到touched事件。
        </div>
    </div>
    <script>
        var inner = document.querySelector('.inner');
        var v_start = 0, curY = 0;

        inner.addEventListener('touchstart', function(e){
            v_start = e.touches[0].pageY;
            curY = parseInt(inner.style.top.slice(0, -2)) || 0;
        }, false);

        inner.addEventListener('touchmove', function(e){
            var v_end = e.touches[0].pageY;
            inner.style.top = (curY + v_end - v_start) + 'px';
            console.log(inner.style.top);
        }, false);

        inner.addEventListener('touchend', function(e){
            inner.style.top = '0px';
            inner.innerHTML += 'touchend
'; }, false); inner.addEventListener('touchcancel', function (e) { e.preventDefault(); inner.innerHTML += 'touchcancel
'; }, false); document.addEventListener('touchmove', function(e){ e.preventDefault(); }, false); </script>

可以用 ios8 的 qq 访问一下这个地址 http://nanblog.net/test/touchend_ios8.html 将背景拉到最下面后,松开就没有触发touchend事件 (我用iPhone plus测试就是这样)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

哆啦不做梦 2022-09-08 12:50:36

没别的办法,只有在touchmove时侦测位置,然后强制执行touchend
if (e.changedTouches[0].pageY <= 0) {

            e.preventDefault();
            that._unbind("touchmove", window);
            that.dispatchEvent(new Event("touchEnd"));
            return;
        }
青丝拂面 2022-09-08 12:50:36

如果在 touchend 之前用戶取消了觸控(比如切換 app),touchcancel 會被觸發,而 touchend 則不會被觸發。

欲拥i 2022-09-08 12:50:36

谢邀。

1、看看这个问题的最后一个回答是否对你有帮助:Understanding touch events

2、Javascript touchend (scroll) event dont work in UIWebView in ios 4

3、用hammer.js试试:hammer.js

信仰 2022-09-08 12:50:36

我在这个问题也纠结了一年多了,一直没有找到合适答案,要是哪位大神有办法解决这个问题,麻烦告诉我一下,可以发我邮箱295194117@qq.com,灰常感谢!!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文