2014-10-23 15 views
5

Sto sviluppando un componente aggiuntivo per Firefox usando sdk 1.17. Contiene un pannello con un pulsante all'interno (Sviluppato usando ExtJs), Voglio fare lo screenshot della pagina corrente quando l'utente fa clic sul pulsante. In Google Chrome è presente un'API (chrome.page-capture). Ma non ho trovato quello simile in Firefox. In firefox come eseguire questa attività dal file main.js.firefox addon sdk 1.17 cattura screenshot

risposta

5

O.k Ho trovato la risposta. Questo codice può essere utilizzato per acquisire la schermata intera della pagina.

Nel tuo main.js aggiungi questo codice.

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

Questo è fatto con addon sdk 1.17. Funziona alla grande.

+0

qualsiasi idea di prendere screenshot del contenuto flash –

Problemi correlati