map不是IE11中的函数

时间:2017-10-21 00:57:01

标签: jquery internet-explorer-11 dropzone.js

我认为IE11中的一个偷偷摸摸的漏洞正在悄悄进入并打破Dropzone。第1653行:

key: "handleFiles",
    value: function handleFiles(files) {
    var _this5 = this;

    return files.map(function (file) {
        return _this5.addFile(file);
    });
}

在IE11中,如果你打电话给typeof(files),你就会得到对象 - 而不是数组。它确实有一个长度属性,但是,其他很少。没有地图功能。 files.map(...会抛出异常。

1 个答案:

答案 0 :(得分:3)

我在Safari 11.01中看到了这个错误,所以它不仅限于IE。

如果你正在使用jQuery,你可以像这样快速地填充这个:

key: "handleFiles",
    value: function handleFiles(files) {
    var _this5 = this;
    files = $.makeArray(files);
    return files.map(function (file) {
        return _this5.addFile(file);
    });
}

就像那样,文件对象变成了一个带有地图功能的合法数组,一切都进行到计划中。

请注意,典型的Polyfill不会解决此问题; IE11确实有一个Array.prototype.map - 这里files中保存的数据结构不是一个合适的数组。