Firefox webextension:将页面保存为html或文本

时间:2017-01-29 10:16:10

标签: firefox-addon firefox-webextensions

使用新的firefox webextensions:有没有办法将当前页面(或其中的一部分)保存为磁盘的html(或文本)?如果没有,将来如何实施这样一个API?

我没有找到任何合适的API并感谢任何帮助。

此致

1 个答案:

答案 0 :(得分:1)

可能有几种方法可以做到这一点。以下内容将帮助您入门。它将活动窗口中当前聚焦选项卡中的网页保存到浏览器的默认下载路径。文件名设置为' samplePage.html' (您可以通过修改downloads.download()选项中的文件名值来更改它;或者您可以完全删除该字段并将其保留为默认命名。)

您的webextension包中需要store icon images才能让用户点击。另外,在尝试使用webextension之前,请务必导航到要保存的网页;关于以下内容的webextensions在Firefox上没有活动:调试页面。

<强> 清单:

{
  "name": "SavePage",
  "version":  "1.0",
  "description":  "Clicking browser icon saves page html",
  "manifest_version": 2,

  "icons": {
    "48": "icons/clickme-48.png"
  },

  "permissions": [
    "tabs",
    "activeTab",
    "downloads"
  ],

  "browser_action": {
    "default_icon": "icons/clickme-32.png"
  },

  "background": {
    "scripts": ["background.js"]
  }       
}

后台脚本:

/* BACKGROUND SCRIPT

Clicking on browser toolbar button saves the webpage in the
current tab to the browser's default downloads path with a
filename of "samplePage.html". The "tabs" and "downloads" 
permissions are required.

*/


browser.browserAction.onClicked.addListener((tab) => {
  var currentUrl = tab.url;

  function onStartedDownload(id) {
    console.log(`Started to download: ${id}`);
  }

  function onFailed(error) {
    console.log(`Something stinks: ${error}`);
  } 

  var startDownload = browser.downloads.download({
    url : currentUrl,
    filename: 'samplePage.html'
  });

  startDownload.then(onStartedDownload, onFailed);
});

另一种方法可能是尝试将网页保存到local storage而不是磁盘。我没有探讨过这个选择。

这些页面可能会有所帮助:

downloads.download()

browserAction.onClicked

给予webextension这些权限可能存在安全风险。您将不得不权衡自己的使用模式的风险。