Как загрузить PDF в новую вкладку / окно без блокировщика всплывающих окон?

У меня есть следующий сервисный вызов для загрузки файлов с сервера. В настоящее время он у меня есть, чтобы 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);
        });

1 ответ

Решение

Я нашел ответ на свой вопрос через другой пост переполнения стека.

Всплывающее окно window.open блокируется во время события нажатия

В основном, я звоню var newWindow = window.open(); прежде чем я позвоню в сервис, а затем newWindow.location = fileUrl в обратном вызове успеха.

Другие вопросы по тегам