javascript - firefox addon sdk 1.17 截图

标签 javascript extjs firefox-addon-sdk

我正在使用 SDK 1.17 开发一个 Firefox 插件。它包含一个面板,里面有一个按钮(使用 ExtJs 开发),我想在用户单击按钮时截取当前页面的屏幕截图。在 Google chrome 中有一个 API (chrome.page-capture)。但是我在 Firefox 中找不到类似的。在 Firefox 中如何从 main.js 执行此任务。

最佳答案

好的,我找到了答案。此代码可用于拍摄整页屏幕截图。

在您的 main.js 中添加此代码。

  var window = require('sdk/window/utils').getMostRecentBrowserWindow();
  var tab = require('sdk/tabs/utils').getActiveTab(window);
  var myData;
  tabs.activeTab.attach({
    contentScript: "self.postMessage(document.body.scrollHeight);",//recieves the total scroll height of tab
    onMessage: function(data)
    {
      console.log("Tab data received: " + data);
      myData = data;
      var thumbnail = window.document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
      window = tab.linkedBrowser.contentWindow;
      thumbnail.width = window.screen.availWidth ;
      thumbnail.height = window.screen.availHeight ;
      var ctx = thumbnail.getContext("2d");
      var snippetWidth = window.outerWidth ;
      var snippetHeight = window.outerHeight ;
      ctx.canvas.left  = 0;
      ctx.canvas.top = 0;
      ctx.canvas.width  = window.innerWidth;
      ctx.canvas.height = myData;//canvas height is made equal to the scroll height of window
      ctx.drawWindow(window, 0, 0, snippetWidth, snippetHeight+myData, "rgb(255,255,255)");//

      var imageDataUri=thumbnail.toDataURL('image/png');
      imageDataUri = imageDataUri.replace("image/png", "image/octet-stream");        
      tabs.open(imageDataUri);
    }
  });

这是通过 addon sdk 1.17 完成的。工作很酷。

关于javascript - firefox addon sdk 1.17 截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26525639/

相关文章:

javascript - 使用空格键时如何检查匹配的字符串?

javascript - 我可以在 Angular JS 中的对象数组中只观察一个变量的变化吗?

extjs - 如何中断或继续Ext.each

javascript - 初始选项卡不会触发打开的、就绪的事件

firefox - 从附加工具包修改 Firefox 下载对话框的内容

javascript - 如何中断点击功能并添加我自己的

javascript - 刷新 RxJs 主题

javascript - ExtJS - 如何遍历商店并获取在特定列中找到的每个项目的总数

javascript - ExtJS - 获取项目的完整路径

javascript - 通过 Firefox 插件将剪贴板中的数据添加到页外输入