【问题标题】:ontouchstart acting weird on mobile devices?ontouchstart 在移动设备上表现怪异?
【发布时间】:2020-05-11 00:35:54
【问题描述】:

我正在开发一款游戏,我正在使用 ontouchstart 作为处理用户在屏幕上点击的一种方式。但是当我点击屏幕时它第一次没有注册,它让我点击它两次以注册甚至一次点击。我不知道该怎么做。有人知道解决办法吗?

我决定用更简化的版本更新我的代码。这也不起作用。至少在IOS设备上,无论我使用什么浏览器,我都必须点击两次才能注册一次。

<html>
    <link href="https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap" rel="stylesheet" />

    <body>
        <h1 class="center-align" id="cn">click me</h1>
        <h2 id="cl">clicked:</h2>
    </body>
    <script>
        let click = 1;

        document.getElementById("cn").ontouchstart = () => {
            click++;
            document.getElementById("cl").innerHTML = "clicked: " + click;
        };
    </script>
</html>

【问题讨论】:

    标签: javascript html mobile phaser-framework ontouchstart


    【解决方案1】:

    您可以尝试从样式中删除touch-action 吗?操纵触摸动作最终会影响触摸事件监听器

    编辑

    你可以试试这个吗?

    object.addEventListener("touchstart", myScript);
    

    【讨论】:

    • 谢谢,刚试了下还是不行。
    • 这看起来像是解决方案,但我试过了,还是不行。 :(
    • 我继续并更新了我的问题,我用一些简单的代码尝试了它,它在我的手机上做同样的事情。我需要点击两次才能注册。好奇怪..
    • w3schools.com/code/tryit.asp?filename=GEO03GCJ605R你能在你的手机上试试这个吗?
    • 谢谢,它没有解决问题,但我意识到它出了什么问题。显然移动浏览器有 300 毫秒的延迟,所以如果你在此之前按下它就不会注册。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    相关资源
    最近更新 更多