【问题标题】:I get mousedown w/ finger on my mouse+touch PC (I need touchstart)我在鼠标+触摸 PC 上用手指按下鼠标(我需要触摸启动)
【发布时间】:2021-03-06 17:03:23
【问题描述】:

为什么当我点击屏幕时,我的一体机(带触摸屏)返回 mousedown 事件,而不是 touchstart ?

我的 javascript 代码运行良好:

  • 在 PC 上(使用 hover
  • 在手机和平​​板电脑上(带有大按钮)

注意:

  • 我负责在每个事件中测试触摸/鼠标(没有 if(isTouchDevice)
  • 我需要测试if(event.type == 'touchstart') 以适应我的代码(例如:hover 或不)

但是对于我的鼠标+触摸屏 PC,我只会收到“鼠标”事件(当我点击和点击时)。为什么?

【问题讨论】:

    标签: javascript touch mouseevent


    【解决方案1】:

    好的,我自己找到了一些东西:

    1. 在我的代码中,event.type 返回了上次触发的事件 (mousedown),因为该函数已启动两次。为什么 ?因为,在鼠标+触摸 PC 上,会触发 2 个事件 同时触摸屏:touchstart + mousedown。 (只有一个:mousedown 鼠标单击时)。见http://jsfiddle.net/z5cygsb4/2/
    2. 解决方案:e.preventDefault();https://jsfiddle.net/qjqcerok/
    3. 但有时,它不起作用。所以,你必须使用document.addEventListener("touchstart", function(e){ e.preventDefault(); }, { passive: false } );https://github.com/facebook/react/issues/9809

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多