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

问题描述 投票:0回答:1

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

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

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

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

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

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

javascript jquery click touch
1个回答
0
投票

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

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

$(this).on(clickEvent,function() {
    //code
});
© www.soinside.com 2019 - 2024. All rights reserved.