获取当前页面的HTML

时间:2015-04-12 11:26:59

标签: firefox firefox-addon firefox-addon-sdk

我正在使用jetpack创建一个Firefox插件(带有node.js的jpm)来扩展Firefox开发人员工具以允许编辑当前页面的html。 (我知道这个功能已经存在;只是想学习绳索)。

我使用什么API来访问当前页面的HTML?我看到有一个Debugger.Source,但我不确定这是否正确。如果是这样,我该如何检索这些数据?

2 个答案:

答案 0 :(得分:1)

无法通过SDK直接访问,但您可以使用content scripts来阅读和修改页面。

答案 1 :(得分:1)

正如第一个答案所示,您可以使用注入页面的内容脚本来获取html源代码。例如,这是一个非常简单的方法,它使用tabs模块将内容脚本附加到当前页面中:

const self = require('sdk/self');
const tabs = require('sdk/tabs');

let { ActionButton } = require("sdk/ui/button/action");

let button = ActionButton({
  id: "my-button-id",
  label: "Get HTML Source",
  icon: {
    "16": "chrome://mozapps/skin/extensions/extensionGeneric.png",
    "32": "chrome://mozapps/skin/extensions/extensionGeneric.png"
  },
  onClick: (state) => {
    let worker = tabs.activeTab.attach({
      contentScript: 'self.port.emit("htmlSrc", {head: document.head.outerHTML, body: document.body.outerHTML});'
    });
    worker.port.on('htmlSrc', (result) => {
      worker.destroy(); // clean up
      let src = "<html>\n"+ result.head + "\n" + result.body + "\n</html>";
      require('sdk/clipboard').set(src, 'text');
    });
  }
});