Как скачать PDF файл в фоновом режиме - PullRequest
1 голос
/ 20 января 2020

Как загрузить файл в фоновом режиме из мобильного браузера, не покидая текущей страницы.

Я посмотрел этот пост в StackOverflow: самый простой способ открыть окно загрузки без переход от страницы

, которая работает для отображения файла (в данном случае PDF) в том же окне, используя этот код:

var file_path = 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf';
var a = document.createElement('A');
a.href = file_path;
a.download = file_path.substr(file_path.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);

Это прекрасно работает, если вы хотите для немедленного отображения PDF в текущем окне.

Однако как сохранить текущий вид и сделать так, чтобы файл загружал / отображал диалог, показывающий процесс загрузки?

Цель состоит в том, чтобы не открывать новую вкладку или окно, чтобы удерживать пользователя на текущей странице. Я просматривал S / O & в Интернете, но не нашел решения для этого. Спасибо за любые решения этой проблемы.

1 Ответ

0 голосов
/ 20 января 2020

вы можете использовать HTML веб-работник https://www.w3schools.com/html/html5_webworkers.asp

var w;

function stopWorker() {
  w.terminate();
  w = undefined;
}

function downloadPDFBackground() {
  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {
      w = new Worker("pdf_workers.js");
    }
    w.onmessage = function(event) {
        var file_path = 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf';
        var a = document.createElement('A');
        a.href = file_path;
        a.download = file_path.substr(file_path.lastIndexOf('/') + 1);
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
        stopWorker();
    };
  } else {
    document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...