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

时间:2019-11-03 19:14:03

标签: javascript jquery click touch

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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