我有一个文件上传器,它使用new DataTransfer()
为上传的图像生成和显示缩略图。对于Safari用户,不支持此构造函数。棘手的部分是,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);