JavaScript 中有没有一种方法可以检测是否可以将文件拖放到使用过的设备上?

Is there a way in JavaScript to detect if files can be dropped on the used device?

我在网站上创建了一个允许用户上传文件的表单。用户还可以将文件拖放到此表单上。但是,在某些设备上,根本不可能拖放 文件 (例如在我的 iPhone 上)。所以我只想在有意义的设备上显示文本“将文件拖放到此处”。

有没有办法从原理上检测设备是否支持拖放文件?解决方法可能是检测鼠标指针是否在移动。在这种情况下,我猜想可以拖放文件。但是,这只是猜测。

有没有更合适的检测方法?请注意,我一般不想检测浏览器是否支持拖放,但是如果浏览器支持拖放 files.

您可以使用 window.navigator.userAgent 来检测 OS 用户正在使用什么。 userAgent returns 一个字符串,您可以解析该字符串以尝试检测其中的某些关键字。我在 geeks for geeks. Along with this Whosebug answer here 看过这篇文章。通过将两者结合起来,您应该能够挑选出某些关键字并检测用户在大多数情况下使用的是什么。似乎旧手机可能有这个问题,所以它可能并不完美。

if (navigator.appVersion.indexOf("Mac") != -1) {
  onWeb = true;
} 
if (navigator.appVersion.indexOf("Win") != -1) {
  onWeb = true;
} else {
onWeb = false;
}

在我个人看来(请对此持保留态度)涉及旧设备上的潜在错误的工作量是不值得的。因此,我会尝试使用文本来告知用户拖放功能的潜力,并为他们提供上传文件的按钮。一些用户更喜欢手动上传文件而不是拖放(我自己),并且通过让这两个选项随时可用,它允许用户使用他们最喜欢的选择。