在尝试在 JavaScrupt 中编写上传库时,我在 IE 11 上遇到了一个奇怪的问题。
使用 XMLHttpRequest 2,您可以上传文件并获取进度。但是,如果您尝试在 webworker 中这样做,您将不会从 IE 11 中获得任何进展(我只尝试了这个版本)。使用相同的代码会出现错误。
这里有一个例子:
worker.js
self.addEventListener("message", function(e) {
var file = e.data;
var xhr = new XMLHttpRequest();
if (xhr.upload)
xhr.upload.onprogress = function(event){
// here we get the progression through event.loaded
};
xhr.open('POST', '/upload.php', true);
xhr.send(file);
});
main.js
var uploadworker = new Worker('worker.js');
uploadworker.postMessage( file );
如果您直接使用此代码,它将适用于任何浏览器。如果你在 webworker 中使用它,它在 IE11 中将不起作用。如果事实上你会在该行上得到一个“无效参数”:if (xhr.upload)
因为当在 webworker 中使用 XMLHttpRequest 时,IE11 似乎没有设置这个属性。
有人知道为什么会这样吗?