是否在所有设备中都通过点击事件检测到触摸设备中的触摸?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否在所有设备中都通过点击事件检测到触摸设备中的触摸?相关的知识,希望对你有一定的参考价值。

我有一些类似这样的jQuery代码

$(this).click(function() {
    //code
});

[我想知道它是否也可以在触摸设备上运行(以点击笔记本电脑中的事件的方式响应触摸事件,所以我在Firefox开发人员工具中使用触摸模拟对其进行了测试,并且确实可以。

我认为这可能是因为所有触摸设备都将触摸事件视为单击事件,所以我对此进行了搜索,结果发现我的假设是错误的,因为触摸是javascript中的单独事件。有ontouchstartontouchend,但某些浏览器不支持它们。尽管我仍然找到这样的代码。

$(this).on("click touchstart",function() {
    //code
});

那么为什么它可以与触摸仿真一起使用?只能在某些触摸设备上以这种方式工作吗?那么,无论哪种浏览器,只要单击一下即可使我的代码在所有设备上都能正常工作,那么我最终的解决方案是什么?

答案

您可以使用此功能分别检测clicktouchstart事件。

var clickEvent = (function() {
  if ('ontouchstart' in document.documentElement === true)
    return 'touchstart';
  else
    return 'click';
})();

$(this).on(clickEvent,function() {
    //code
});

以上是关于是否在所有设备中都通过点击事件检测到触摸设备中的触摸?的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript 检查触摸设备

检测到浏览器没有鼠标且仅触摸

Unity 之 移动设备的触控操作

如何针对触控设备优化网站

单击/触摸事件的背景颜色更改在触摸设备上不起作用

检测浏览器/设备是不是支持双击事件