javascript - 如何从网站内部下载整个网站

标签 javascript html

我正在制作一个网站,我想在其中为用户提供下载整个网站(包括 CSS 和图像)供他们修改的功能。我知道我可以下载个人资源

<a href="./resource.extention" download="filename">Click Me</a>

但正如我所说,这只会下载一个文件,而我想下载整个网站。

如果它能帮助您理解我的意思:在 chrome、IE 和 Firefox 中,您可以按 ctrl+s 下载整个网站(确保将其另存为 Web page, Complete

编辑:我知道我可以创建一个它会下载的 .zip 文件,但是这样做需要我在每次进行更改时更新它,这是我不想做的事情,因为我可能会做出很多改变。

最佳答案

正如我提到的,你最好有一个 cron job或类似的东西,偶尔会为您创建一个包含所有所需静态内容的 zip 文件。

如果您坚持在客户端使用 javascript 执行此操作,请查看 JSZip .

您仍然必须找到一种方法来获取要保存的服务器静态文件列表。 例如,您可以创建一个 txt 文件,其中每一行都是指向网页静态文件的链接。

您将不得不遍历此文件并使用 $.get 获取它的内容。

像这样:

// Get list of files to save (either by GET request or hardcoded)
filesList = ["f1.json /echo/jsonp?name=1", "inner/f2.json /echo/jsonp?name=2"];

function createZip() {
    zip = new JSZip();

    // make bunch of requests to get files content
    var requests = [];
    // for scoping the fileName
    _then = (fname) => data => ({ fileName: fname, data });
    for (var file of filesList) {
        [fileName, fileUrl] = file.split(" ");
        requests.push($.get(fileUrl).then(_then(fileName)));
    }

    // When all finished
    $.when(...requests).then(function () {
        // Add each result to the zip
        for (var arg of arguments) {
            zip.file(arg.fileName, JSON.stringify(arg.data));
        }

        // Save
        zip.generateAsync({ type: "blob" })
            .then(function (blob) {
                saveAs(blob, "site.zip");
            });
    });
}

$("#saver").click(() => {
    createZip();
});

JSFiddle

就我个人而言,我不喜欢这种方法。但随心所欲。

关于javascript - 如何从网站内部下载整个网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53189475/

相关文章:

javascript - iOS 5 Mobile Safari 应用程序缓存更改?

javascript - 如何使 timeago.js 仅显示几小时前

javascript - 如何使用 || 编写 if 语句(或者)减少重复次数?

javascript - 从上游速度较慢的服务器提供大型 JavaScript 文件库的最佳方法是什么?

css - 定位 div 的问题

javascript - 在 TextBox OnKeyPress 上使用 RegEx 无法按键盘中的 Tab 按钮

javascript - 为什么在包含 js 文件时不总是使用 https?

iOS 基于摄像头的条码扫描器(通过 URL)

Javascript 可以将背景颜色更改为某些 <div>

javascript - 如何使用 URL.createObjectURL?