JSzip“ generateAsync”在Internet Explorer上不起作用?

时间:2019-09-17 14:08:08

标签: internet-explorer jszip

我想使用“ JSZip”版本将PDF的集合下载并保存在单个ZIP文件中。 3.2.1和“ FileSaver”(2014年1月24日)可以在Windows 10 64bit上使用所有最新的浏览器。

这是在Windows 10上,并且使用Internet Explorer 11,Edge,Canary,Chrome,Firefox和Opera,但不使用Safari。

我与Internet Explorer 11上的“ generateAsync ”功能存在某种兼容性问题,这是我的代码无法使用的唯一一个浏览器。

我使用[ Ajax ]收集PDF,并将它们全部一张一张地放入一个ZIP文件中,但是当涉及到“ generateAsync”时,它仅在IE上失败。

var xhr = new XMLHttpRequest(); // Ajax
var zip = new JSZip();          // JSzip

xhr.responseType = "blob";

我使用自己的方法执行Ajax:

xhr.open("GET", filepath[i], true);
xhr.send();

每次Ajax对PDF的调用都会执行“ xhr.onreadystatechange”。

xhr.onreadystatechange = function()
{
  if (xhr.status == 200 && xhr.readyState == 4)
  {
    PDFdata = xhr.response;

“ filename [i]”是一个由PDF文件名填充的数组。

    zip.file(filename[i], PDFdata, {blob: true});

直到一切顺利,我将PDF文件名及其数据存储在ZIP文件中。

  }
}

当PDF结束时,我直接进入保存:

zip.generateAsync({type:"blob"}).then
(
  function(content)
  {
    saveAs(content,fn);
  }
);

但是问题来了:似乎“ zip.generateAsync({type:” blob“})。then ”使Javascript无法以某种方式仅在IE11上运行。

如果我在函数的前面和内部放了[alert],则只有第一个响应,而没有第二个响应:

alert('STILL WORKING...');

zip.generateAsync({type:"blob"}).then
(
  function(content)
  {
    alert('CANNOT REACH THIS POINT!');

    saveAs(content,fn);

    alert('DOES NOT EVEN KNOW IF IT SAVE WITH SUCCESS ON IE11');
  }
);

zip.generateAsync({type:” blob“})。then ”中有IE所不喜欢的东西。

我确认我使用过的其他所有浏览器对此程序的容忍度都没有问题,但是完全没有问题,但是由于在我的工作场所总是发现有人使用旧IE,所以我唯一能做的就是到目前为止,建议他们使用Chrome或Edge代替IE。

我的问题是:“是否有可能使JSzip在IE11上完全正常工作?”还是我必须打开并调试[js]源文件并尝试找到一种方法?

0 个答案:

没有答案