【问题标题】:conflicting value for pageY on IpadIpad 上 pageY 的值冲突
【发布时间】:2021-04-30 08:14:28
【问题描述】:

我正在 iPad (IOS 14.3) 上以纵向模式测试页面。 (见下面的代码)

我正在输出屏幕的触摸 Y 值。 当我点击顶部附近的屏幕时,输出接近 0(取决于手指的粗细)。 当我点击底部附近的屏幕时,输出接近 1000。

但是,当我从上到下垂直滑动时,值从 0 开始,但当我用手指到达底部时,它在 600 附近停止。

另一个目录中的相同问题,当我从底部开始时显示一个大约 1000 的值,当它到达顶部时,它在 300 左右停止。

似乎每个(垂直)方向都缺少 300 像素。

注意:X 值(水平滑动)是准确的,因此我在此示例中将其排除在外。同样在 Android 上,console.log 的输出看起来也不错。

    <!doctype html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1,minimum-scale=1.0, user-scalable=yes">

    <style>
        body,
        html {
            position: fixed;
            width: 100%;
            height: 100%;
            margin: 0;
            padding 0;
            background-color: #AAAAAA;
        }
    </style>
</head>

<body>
<div style='text-align:center;font-size:25px;width:100px;border:1px solid blue;margin:auto' id='feedback'>Hello</div>
</body>

</html>

<script>

    var func = function (e) {
        var evt = (typeof e.originalEvent === 'undefined') ? e : e.originalEvent;
        var touch = evt.touches[0] || evt.changedTouches[0];
        document.getElementById('feedback').textContent = 'top:'+touch.pageY;
    };

    document.body.addEventListener('touchstart', func);
    document.body.addEventListener('touchmove', func);
    document.body.addEventListener('touchend', func);

</script>

垂直滑动我得到的结果与触摸屏幕时不同的原因是什么?

【问题讨论】:

    标签: javascript ios ipad touch


    【解决方案1】:

    改了就解决了

    document.getElementById('feedback').textContent = 'top:'+touch.pageY;

    进入

    document.getElementById('feedback').textContent = 'top:'+touch.clientY;

    虽然我不太明白为什么在这种情况下这些会有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-13
      • 2012-08-05
      • 2019-06-26
      • 2017-02-09
      • 2021-02-24
      • 1970-01-01
      • 2018-01-02
      • 2020-11-13
      相关资源
      最近更新 更多