微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确定浏览器是否支持DataTransfer构造函数?

如何解决如何确定浏览器是否支持DataTransfer构造函数?

我有一个文件上传器,它使用new DataTransfer()生成显示上传图像的缩略图。对于Safari用户,此构造函数not supported。棘手的部分是支持DataTransfer作为功能 -特别是不支持的构造函数

如何检测此功能是否存在,以便为Safari用户提供标准的file输入?要澄清的是,我不是在寻求后备方面的帮助-只是功能检测本身。

我尝试以下操作均无济于事:

const isConstructor = (func) => (func && typeof func === "function" && func.prototype && func.prototype.constructor) === func;

isConstructor(DataTransfer);  //true in Safari

解决方法

我能够解决此问题,但是我有点不满意,但是有些古怪。我仍然会得到更好的答案。

let dataTransferConstructorSupported = false;
try { new DataTransfer(),dataTransferConstructorSupported = true } catch {}

console.log(dataTransferConstructorSupported);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。