2014-10-23 17 views
5

Ich entwickle ein Firefox-Add-on mit SDK 1.17. Es enthält ein Panel mit einer Schaltfläche (Entwickelt mit ExtJs), ich möchte den Screenshot der aktuellen Seite nehmen, wenn der Benutzer auf die Schaltfläche klickt. In Google Chrome gibt es eine API (chrome.page-capture). Aber ich konnte das ähnliche in Firefox nicht finden. In Firefox, wie Sie diese Aufgabe von der main.js aus tun.firefox addon sdk 1.17 Screenshot erstellen

Antwort

5

O.k Ich habe die Antwort gefunden. Dieser Code kann verwendet werden, um den gesamten Seitenbildschirm aufzunehmen.

Fügen Sie diesen Code in Ihre main.js ein.

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); 
    } 
    }); 

Dies geschieht mit Addon SDK 1.17. Funktioniert cool.

+0

eine Idee, Screenshot Flash-Inhalt zu machen –

Verwandte Themen