在IE10 / Edge

时间:2015-12-22 16:23:45

标签: angularjs pdf cross-browser internet-explorer-10 microsoft-edge

使用此代码,我的pdf名称不正确:一串随机字母,如uuid。 这个问题似乎只适用于IE 10 / Edge。 AngularJS的1.4.7版

this.downloadPdf = function(pdfName){
    console.log(pdfName);
    $http.get(config.UrlApi + "/pdf/"+ pdfName.nameFile, { responseType: 'arraybuffer' });
     var a = document.createElement('a');
     a.href = URL.createObjectURL(blob);
     a.target = '_blank';
     a.download = pdfName.name;
     document.body.appendChild(a);
     a.click();
 });

1 个答案:

答案 0 :(得分:0)

使用Blob界面:

function build(response)
  {
  var bb = new Blob([response.data], { type: "application/pdf"});

  if (URL && URL.hasOwnProperty("createObjectURL") )
    {
    var url = URL.createObjectURL(bb);
    }
  else if (window.navigator.msSaveOrOpenBlob)
    {
    window.navigator.msSaveOrOpenBlob(bb, 'foo.pdf');
    }
  }

$http.get(config.UrlApi + "/pdf/"+ pdfName.nameFile, { responseType: 'arraybuffer' }).then(build);
  

Blob网址受原始政策约束。这意味着它们只能用于与运行创建URL的脚本的文档具有相同原始站点的文档。如果需要使用在不同域中运行的<iframe>的blob对象,则必须使用postMessage API将blob数据发送到框架,然后在那里创建blob:url。

<强>参考