如何检测 ios 设备上网站的三次点击?

Posted

技术标签:

【中文标题】如何检测 ios 设备上网站的三次点击?【英文标题】:how to detect triple click on website on ios device? 【发布时间】:2019-04-20 11:31:34 【问题描述】:

我必须在移动设备上三次点击我的网站正文时显示和隐藏一个 div 我用 javascript 编写的以下代码在 android 设备中运行良好,但在 ios 中不起作用。 所以你能帮我解决它吗?

代码是:

window.onload = function() 

  document.querySelector('body').addEventListener('click', function(evt) 

    evt.preventDefault();
    if (evt.detail === 3) 
      document.getElementById('mmu').style.height = '100px';
    

    if (evt.detail === 1) 
      document.getElementById('mmu').style.height = '0px';
    

  );

#mmu 
  width: 100px;
  height: 0px;
  position: fixed;
  left: 0;
  cursor: pointer;
  top: 0;
  background: red;


body 
  height: 1000px;
  background: #eee;
  width: 100%;
  cursor: pointer;
<div id="mmu"></div>

【问题讨论】:

evt.detail 返回什么? @AswinKumar 它在桌面和安卓设备上运行良好。 evt.detail 返回用户点击次数 【参考方案1】:

在 iOS 上,click 事件不会正常触发。相反,您需要监控触摸事件,例如touchend,以检查点击了多少次。

例如,您可能会尝试检查是否在足够的超时窗口内进行了点击

TOUCH_TIMEOUT_MILLISECONDS = 500
touch_count = 0
window.onload = function () 
    document.querySelector('body').addEventListener('touchend', function (evt) 
        touch_count += 1

        setTimeout(function () 
            touch_count = 0
        , TOUCH_TIMEOUT_MILLISECONDS);

        if (touch_count === 3) 
            document.getElementById('mmu').style.height = '100px';
        

        if (touch_count === 1) 
            document.getElementById('mmu').style.height = '0px';
        

        evt.preventDefault();
    );


根据您的要求,您可能还需要考虑从同一操作触发的 touchendclick 事件。

【讨论】:

以上是关于如何检测 ios 设备上网站的三次点击?的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]从 2G 到 5G,手机上网话语权的三次改变

TCP的三次握手

connect及bindlistenaccept背后的三次握手

ubuntu检测不到无线网卡

如何检测iOS设备是否处于静默模式?

如何检测 iOS 设备是不是处于静音模式?