我正在使用sdk 1.17开发Firefox插件。它包含一个面板和一个内部按钮(使用ExtJs开发),我想在用户点击按钮时对当前页面进行截图。在Google Chrome中,有一个API(chrome.page-capture)。但我找不到类似的API在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完成的。效果很棒。