在AngularJS网络应用程序中,我有这个JS代码块:
var _loop = function _loop(file) {
// For each file a reader (to read the base64 URL)
// and a promise (to track and merge results and errors)
var promise = new Promise(function (resolve, reject) {
var reader = new FileReader();
reader.addEventListener('load', function (event) {
var type = void 0;
var name = file.name;
// Try to find the MIME type of the file.
var match = mimeTypeMatcher.exec(file.type);
if (match) {
type = match[1]; // The first part in the MIME, "image" in image/png
} else {
type = file.type;
}
// If it's an image, try to find its size
if (type === 'image') {
var data = {
src: reader.result,
name: name,
type: type,
height: 0,
width: 0
};
var image = new Image();
image.addEventListener('error', function (error) {
reject(error);
});
image.addEventListener('load', function () {
data.height = image.height;
data.width = image.width;
resolve(data);
});
image.src = data.src;
} else if (type) {
// Not an image, but has a type
resolve({
src: reader.result,
name: name,
type: type
});
} else {
// No type found, resolve with the URL only
resolve(reader.result);
}
});
reader.addEventListener('error', function (error) {
reject(error);
});
reader.addEventListener('abort', function (error) {
reject('Aborted');
});
reader.readAsDataURL(file);
});
promises.push(promise);
};
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var file = _step.value;
_loop(file);
} } catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
并在最后一个块中的Internet Explorer 11中:
for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var file = _step.value;
_loop(file);
}
我收到此错误:
该对象不支持该属性或'jscomp_symbol_iterator0'方法
我读到IE不支持Symbol。所以,我试图将代码重写为:
for (var _iterator = files.length, _step; !(_iteratorNormalCompletion = (_step = _iterator[_iterator++]).done); _iteratorNormalCompletion = true) {
var file = _step.value;
_loop(file);
}
但我有这个错误:
无法读取未定义
的属性“已完成”
所以,我知道IE不支持它。但是,有另一种方法可以用另一种方式编写该循环,由IE支持吗?
答案 0 :(得分:0)
在更改代码之前,如果一切都在Chrome中正常运行,并且您在项目中使用了编译功能,则可以考虑在入口点的顶部添加
import 'core-js'
目前core-js polyfill library是提供跨浏览器支持的最简单方法