在 JAVASCRIPT 中检测触摸用户何时向上拉手指

Detect when touch user pulls finger up in JAVASCRIPT

抱歉,如果这是一个重复的问题,但我找不到任何答案。

基本上,我正在开发一个包含按钮的网络应用程序。

我希望该按钮在两种不同的情况下突出显示:

-如果用户使用的是非触摸(桌面)设备,如果鼠标在其上,按钮将突出显示,否则会恢复正常。

-如果用户在没有鼠标的触摸设备上,按钮将在触摸时突出显示,并在触摸停止时恢复正常。

桌面部分没问题,但是触摸部分有问题:要让按钮恢复正常,我点了之后要点别的地方,停止触摸屏幕不行。

我做错了什么?谢谢!

JS代码:

if (!this.isTouch) {
  document.getElementById("search_button").addEventListener("mouseover", function () {
    highlightButton();
  });
  document.getElementById("search_button").addEventListener("mouseout", function() {
    restoreButton();
  });
}
else if (window.matchMedia("(any-pointer: none)").matches) {
  document.getElementById("search_button").addEventListener("touchstart", function () {
    highlightButton();
    });
  document.getElementById("search_button").addEventListener("touchend", function () {
      restoreButton();
    });
}

也尝试结合 touchcancel 事件:

  addEventListener( "touchcancel", function ( event ) {
      console.log( "BREAK" );
      restoreButton();
    }, false );

还列出了几个可能对您有用的触摸事件,这扩展了平板电脑和手机等触摸设备:

  el.addEventListener("touchstart", handleStart, false);
  el.addEventListener("touchend", handleEnd, false);
  el.addEventListener("touchcancel", handleCancel, false);
  el.addEventListener("touchmove", handleMove, false);

MDN docs

阅读更多内容