2016-01-03 13 views
7

Ho una strega di un sito Web che utilizza commenti di plugin di Facebook. Sto cercando un modo per avere quei commenti all'interno di uno screenshot. Se uso il semplice html2canvas ottengo una casella vuota invece di loro. Così provo ad usare html2canvasproxy ma ora stampa alcuni log di console javascript invece dei commenti di facebook.Html2canvas: commenti del plug-in di facebook

Dovrebbe essere come http://www.peoplesecrets.com/screenshots/1.png ma ottengo http://www.peoplesecrets.com/screenshots/2.png. Ho notato che html2canvasproxy.php salva correttamente il plugin di Facebook html.

Non riesco a trovare alcun errore javascript nel log della console.

Sto utilizzando il seguente codice per prendere lo screenshot:

html2canvas(document.body, { 
    "logging": true, //Enable log (use Web Console for get Errors and Warnings) 
    "proxy":"js/html2canvasproxy.php", 
    "onrendered": function(canvas) { 
     var img = new Image(); 
     img.onload = function() { 
      img.onload = null; 
      document.body.appendChild(img); 
     }; 
     img.onerror = function() { 
      img.onerror = null; 
      if(window.console.log) { 
       window.console.log("Not loaded image from canvas.toDataURL"); 
      } else { 
       alert("Not loaded image from canvas.toDataURL"); 
      } 
     }; 
     img.src = canvas.toDataURL("image/png"); 
    } 
}); 

E ho questa impostazioni in html2canvasproxy.php:

//Turn off errors because the script already own uses "error_get_last" 
error_reporting(0); 

//setup 
define('JSLOG', 'console.log'); //Configure alternative function log, eg. console.log, alert, custom_function 
define('PATH', '../screenshots');//relative folder where the images are saved 
define('CCACHE', 60 * 5 * 1000);//Limit access-control and cache, define 0/false/null/-1 to not use "http header cache" 
define('TIMEOUT', 30);//Timeout from load Socket 
define('MAX_LOOP', 10);//Configure loop limit for redirect (location header) 
define('CROSS_DOMAIN', 0);//Enable use of "data URI scheme" 

//constants 
define('EOL', chr(10)); 
define('WOL', chr(13)); 
define('GMDATECACHE', gmdate('D, d M Y H:i:s')); 

risposta

0

prima idea ho avuto durante la lettura è quello di includere un certo timeout - aspettando un po 'più a lungo (diciamo 200 ms) - in modo da avere più probabilità di caricare le cose.

Ma dopo aver letto questo sul sito del plugin: "Lo script ti permette di prendere" schermate "di pagine web o parti di esso, direttamente sul browser degli utenti.L'immagine è basata sul DOM e come tale potrebbe non essere al 100% accurato alla rappresentazione reale in quanto non crea uno screenshot effettivo, ma crea lo screenshot in base alle informazioni disponibili nella pagina. " non ha potuto aiutare.

Personalmente vorrei indagare usando un'altra soluzione - come per esempio PhantomJS:

"PhantomJS è un WebKit senza testa script con un'API JavaScript Essa ha il supporto veloce e nativo per diversi standard web: la manipolazione DOM, selettore CSS,. JSON, Canvas e SVG. "

E 'facile in questo modo:

var page = require('webpage').create(); 
page.open('http://github.com/', function() { 
    page.render('github.png'); 
    phantom.exit(); 
}); 
Problemi correlati