4

我有以下服务调用来从服务器下载文件。我目前拥有它,以便 PDF 将在新选项卡/窗口中打开,并且将下载任何其他文档类型。

我现在遇到的问题是 PDF 被弹出窗口阻止程序阻止。有没有办法解决?

  return formService.getForm(params)
        .$promise
        .then(response => {
            var blob = new Blob([response.data], {
                type: response.responseType
            });
            var fileUrl = (window.URL || window.webkitURL).createObjectURL(blob);
            if (response.responseType === 'application/pdf') {
                window.open(fileUrl);
            } else {
                var a = document.createElement("a");
                document.body.appendChild(a);
                a.style = "display: none"
                a.href = fileUrl;
                a.download = formName;
                a.target = "_blank";
                a.click();
                window.URL.revokeObjectURL(fileUrl);
            }
        })
        .catch(error => {
            console.error(`Error downloading form '${formName}' `, error);
        });
4

1 回答 1

14

我通过另一个堆栈溢出帖子找到了我的问题的答案。

window.open 弹出窗口在点击事件期间被阻止

基本上,我在拨打var newWindow = window.open();服务电话之前先拨打电话,然后newWindow.location = fileUrl在成功回调中拨打电话。

于 2016-09-09T16:52:01.573 回答