【问题标题】:How can I reliably determine if a browser supports the DataTransfer() constructor?如何可靠地确定浏览器是否支持 DataTransfer() 构造函数?
【发布时间】:2020-10-21 10:18:30
【问题描述】:

我有一个文件上传器,它使用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

【问题讨论】:

    标签: javascript safari cross-browser data-transfer


    【解决方案1】:

    我能够解决这个问题,但我不太满意。我仍然会尽我所能得到更好的答案。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-05
      • 2014-04-26
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多