繁体   English   中英

如何在后台下载 PDF 文件

[英]How to Download a PDF file in the background

如何在不离开当前页面的情况下在移动浏览器的后台下载文件。

我看过这篇 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 & 但没有找到解决方案。 感谢您对此问题的任何解决方案。

您可以使用 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.";
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM