【问题标题】:How can I check if the browser support HTML5 file upload (FormData object) after using FileAPI使用 FileAPI 后如何检查浏览器是否支持 HTML5 文件上传(FormData 对象)
【发布时间】:2014-07-24 16:43:43
【问题描述】:

您好,我一直在使用 AngualarJS 并使用文件上传控件,它工作得很好。现在我使用FileAPI 使其在IE8/9 中工作。

但是现在我想检测浏览器是否支持 FormData,因为我想一次只限制一个文件。但是当我使用 FileAPI 时,window.FormData === undefined 方法不起作用,因为我得到了这样的东西IE8:

function(){return{append:function(a,b,c){this.data.push({key:a,val:b,name:c})},data:[],__isShim:!0}} 

如何检测浏览器是否支持FormData

【问题讨论】:

    标签: html angularjs file-upload form-data


    【解决方案1】:

    由于您使用的是 shim,并且您的 shim 似乎返回了一个带有 __isShim 属性且值为 true 的对象,因此您可以像这样检查它:

    var isFormDataSupported = window.FormData && !(new window.FormData()).__isShim;
    

    或者,您可以在添加 shim 之前检查它:

    <script type="text/javascript">
        var isFormDataSupported = !!window.FormData;
    </script>
    <script src="src/to/your/shim.js"></script>
    

    【讨论】:

    • 感谢您的解决方案,但 JSLINT 抛出此错误:JSLint : Unexpected dangling '_' in '__isShim'
    • This "thread" 解释了原因以及 that one 如何摆脱它。这只是一个警告,而不是实际问题。或者,您可以检查FormData 之前加载垫片。
    • 如果我使用 : if ($window.FormData.toString().indexOf('__isShim') !== -1) {
    • 它也可以工作(尽管注意!==-1 表示isNotSupported)。
    猜你喜欢
    • 2011-11-09
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多