JavaScript 有没有办法检测文件是否可以拖放到所使用的设备上?

2023-12-23

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

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

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


您可以使用 window.navigator.userAgent 来检测用户正在使用的操作系统。 userAgent 返回一个字符串,您可以解析该字符串以尝试检测其中的某些关键字。我看了这篇文章极客的极客 https://www.geeksforgeeks.org/detect-the-operating-system-of-user-using-javascript/。连同这个 stackoverflow 答案here https://stackoverflow.com/questions/9038625/detect-if-device-is-ios#:%7E:text=It%27s%20probably%20worth%20answering%20that%20iPads%20running%20iOS%2013%20will%20have%20navigator.。通过将两者结合起来,您应该能够挑选出某些关键字并检测大多数情况下用户正在使用的内容。似乎较旧的手机可能存在此问题,因此它可能并不完美。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 有没有办法检测文件是否可以拖放到所使用的设备上? 的相关文章

随机推荐

  • .Net 4 MemoryCache 因并发垃圾收集而泄漏

    我正在使用新的内存缓存 http msdn microsoft com en us library system runtime caching memorycache aspx在 Net 4 中 最大缓存大小限制以 MB 为单位 我测试过
  • 匿名类型与动态类型

    c 3 0 中的匿名类型 var 和 c 4 0 中的动态类型 dynamic 之间的真正区别是什么 你似乎混合了三种完全不同 正交的东西 静态与动态 typing 显性与隐性 typing 命名与匿名 types 这三个方面是完全独立的
  • 在 GWT 上将字符串转换为日期

    如何使用 GWT 2 0 3 将字符串转换为日期或日期转换为字符串 通过上面的方法java util Date类本身 parse String s and toString 尽管第一种方法已被弃用 但它是与 GWT 一起使用的方法 如果您想
  • DOMDocument/Xpath - 如何从表中获取特定行

    这是表 dom 输出 table cellspacing 0 cellpadding 0 tbody tr th th th th th br th th th th th th th tr tr td td td em AUD em td
  • 从 shell dbus-send 在 C 中调用 dbus

    我有一个 dbus send 调用 dbus send system print reply dest org freedesktop ModemManager1 org freedesktop ModemManager1 Modem 0
  • 如何使用avconv / ffmpeg从流RTMP中连续提取视频帧?

    我们正在处理 RTMP 上的流视频 我的目标是以给定的时间间隔从流中提取帧 例如每 1 秒 目前 我在循环中运行一个命令 该命令获取一个帧并将其导出为 base64 JPEG avconv i
  • 使用 jQuery 在单击时自动选择 span 标记内的文本

    我有一个 div 其中包含一系列 span 标签 每个标签都包含一个文本字符串 我想将 jQuery 单击事件附加到所有跨度 以便单击任何跨度内的文本时 将自动选择整行文本 dom gt insideText 对象 以方便拖放或复制 粘贴文
  • 如何在屏幕中央放置一个正方形(使用xaml)

    我不明白为什么这这么难 relativelayout 上没有锚点吗 我想把正方形放在屏幕中央 正方形的宽度是屏幕宽度的80 正方形的高度与宽度相同 很简单 但到目前为止还无法弄清楚如何与 xaml 一起使用 你可以帮帮我吗 最简单的 XAM
  • iCarousel 从右到左滚动移动到从左到右

    我正在将 iCarousel 用于我的 ipad 应用程序 轮播类型是 iCarouselTypeLinear 当从右向左滚动时 它会从左向右移动 请帮我解决这个问题 None
  • 如何解构为引用值而不是引用借用?

    如何重写以下内容 将其全部写在函数签名中的一行中 fn process tup mut u32 u32 mut image Luma
  • 如何在服务器端实现firebase云消息传递?

    迁移到 Firebase 后 我测试了使用 Firebase 控制台发送通知 效果很好 但我需要在特定时间每天发送通知 因此我没有使用 Firebase 控制台 而是使用以前的 cron 作业每天发送通知 我变了https android
  • 如何检查字符串是否经过 Base64 编码

    我想解码 Base64 编码的字符串 然后将其存储在我的数据库中 如果输入不是 Base64 编码 我需要抛出一个错误 如何检查字符串是否经过 Base64 编码 您可以使用以下正则表达式来检查字符串是否构成有效的 Base64 编码 A
  • JavaScript 未知错误

    我的代码有问题 过去两天我一直无法解决 function 7 returns the number of times that pattern occurs in string function score string pattern v
  • 如何在 OpenShift 上检测 WebSocket 连接的远程/客户端 IP 地址

    在 OpenShift 云中 通常的 Apache 代理将发送 HTTP 标头x client ip and x forwarded for 我可以用它来确定客户端 IP 但对于较新的代理 这是 WebSocket 用户的唯一选择 http
  • Flask - Active Directory 身份验证[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我制作了一个小型 Flask 应用程序 我希望用户能够使用他们的 Windows NT ID 进行身份验证 我不是 IT 团队的一员
  • 用于独立应用程序 Winforms 的数据库[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JSlider 标签中的工具提示

    我想创建一个带有标签的 JSlider 其中有一个工具提示 JSlider slider new JSlider JLabel label new JLabel First slider setPaintLabels true Hashta
  • redirect_to 和 render 可以互换吗?

    对于下面的代码 如果将redirect to替换为render会发生什么情况 反之亦然 def create product Product new params product respond to do format if produc
  • 如何使用 Yiinitializr 在 Yii 项目中创建友好链接

    我尝试在我的 Yii 项目中使用 Yiinitializr 站点结构 结构如下 root backend standart yii folders www index php admin mysite com common common f
  • JavaScript 有没有办法检测文件是否可以拖放到所使用的设备上?

    我在网站上创建了一个表单 允许用户上传文件 用户还可以将文件拖放到此表单上 但是 在某些设备上 根本无法拖放files 例如在我的 iPhone 上 因此 我只想仅在有意义的设备上显示文本 将文件拖放到此处 有没有办法原则上检测设备是否支持