我们可以使用chrome.downloads.download完全下载网页吗? (谷歌Chrome扩展程序)

时间:2014-07-10 08:50:52

标签: javascript google-chrome google-chrome-extension

我想从Google Chrome扩展程序中完全保存wabpage。 我添加了"downloads", "<all_urls>"权限,并确认以下代码将Google页面保存为google.html

  chrome.downloads.download(
            { url: "http://www.google.com",
              filename: "google.html" },
            function (x) { console.log(x); })

但是,此代码仅保存html文件。 样式表,脚本和图像不会保存。 我想完全保存网页,就像我使用对话框保存页面一样,选择Format: Webpage, Complete

我调查了document但我无法找到方法。

所以我的问题是:如何使用Google Chrome浏览器api完全从扩展程序下载网页?

2 个答案:

答案 0 :(得分:8)

downloads API仅下载单个资源。如果您想保存完整的网页,则可以先打开网页,然后使用chrome.pageCapture.saveAsMHTML将其导出为MHTML,使用{为导出的blob:创建Blob - 网址{1}}最后使用chrome.downloads.download API保存此网址。

pageCapture API需要有效的tabId。例如:

URL.createObjectURL

要试用,请将之前的代码放入// Create new tab, wait until it is loaded and save the page chrome.tabs.create({ url: 'http://example.com' }, function(tab) { chrome.tabs.onUpdated.addListener(function func(tabId, changeInfo) { if (tabId == tab.id && changeInfo.status == 'complete') { chrome.tabs.onUpdated.removeListener(func); savePage(tabId); } }); }); function savePage(tabId) { chrome.pageCapture.saveAsMHTML({ tabId: tabId }, function(blob) { var url = URL.createObjectURL(blob); // Optional: chrome.tabs.remove(tabId); // to close the tab chrome.downloads.download({ url: url, filename: 'whatever.mhtml' }); }); }
将权限添加到background.js(如下所示)并重新加载扩展名。然后将打开example.com,网页将保存为独立的MHTML文件。

manifest.json

答案 1 :(得分:-1)

不,它不会为你下载所有文件:images,js,css等。 您应该使用HTTRACK等工具。