Javascript 区分仅触摸和鼠标及触摸设备

Javascript 区分仅触摸和鼠标及触摸设备,javascript,browser,touch,mouse,Javascript,Browser,Touch,Mouse,现在,我正在做一个支持拖放的项目的一部分。请看图片进行说明: 虽然是德语,但我想这很简单:用户可以从顶部拖动蓝色框,在下面的灰色区域显示“Verfügbare Empfänger”。这个很好用 在移动设备上,我只是删除了拖放和灰色区域,并可以通过单击它们来添加蓝色框 现在来看实际问题:为了检测触摸,我使用了我在StackOverflow上找到的以下javascript方法: if (window.matchMedia("(any-pointer: coarse)").matches) {

现在,我正在做一个支持拖放的项目的一部分。请看图片进行说明:

虽然是德语,但我想这很简单:用户可以从顶部拖动蓝色框,在下面的灰色区域显示“Verfügbare Empfänger”。这个很好用

在移动设备上,我只是删除了拖放和灰色区域,并可以通过单击它们来添加蓝色框

现在来看实际问题:为了检测触摸,我使用了我在StackOverflow上找到的以下javascript方法:

if (window.matchMedia("(any-pointer: coarse)").matches) {
    vm.touchScreen = true;
}
根据vm.touchScreen的值,将启用/禁用拖动。然而,我们的一个客户有一个设备,支持触摸和鼠标。可以想象,由于触摸屏在这种情况下被设置为true,用户即使有鼠标也不能使用拖放

因此,我正在寻找这样的东西:

getInputType=function(){
    if(somecheck1)return 1;/Touch only
    if(somecheck2)return 2;//Mouse only
    if(somecheck3)return 3;//Mouse and Touch
}
实际上我已经有了一个功能性的解决方案。然而,它依赖于用户在显示我在图像中显示的部分之前触发mouseEvents和touchfevents。通过在头部之前触发鼠标或触摸,可以设置两个布尔值:hasMouse和hasTouch。当然,如果用户立即通过拖放刷新显示零件的页面,则此操作不起作用

如果有人能帮助我或为我提供一个正确解决方案的链接,我将非常高兴


向你问好好,我错了。我尝试了一种不同的谷歌搜索方法,通过这种方式,我找到了答案:

总而言之,以下是我正在使用的代码:

if (window.matchMedia("(any-pointer: coarse)").matches) {
    hasTouch = true;
}
if (matchMedia('(pointer:fine)').matches) {
    hasMouse = true;
}
通过这种方式,您可以检测以下情况:

-该设备只有触摸功能(hasTouch&&!hasMouse)

-设备只有鼠标(!hasTouch&&hasMouse)


-该设备既有触摸屏又有鼠标(hasTouch&&hasMouse)

我仍在寻找解决方案,这一部分对我的项目至关重要!我非常感谢您的帮助或提示。相关博客文章:(David Gilbertson,2016年8月)。TLDR:不要写额外的代码仅仅为了歧视纯触摸或纯鼠标用户。为他们启用与为触摸和鼠标用户所做的相同的代码。如果他们最终没有使用一半,那不是问题。回答得很好!非常感谢。不要忘记添加
var hasstouch=false
var hasMouse=false在开头。