2016-09-29 1 views
1

Ich benutze seit einiger Zeit node-webshot mit einem meiner Sailsjs-Projekte. In diesem benutze ich es, um eine Web site einer Route zu machen, die eine Ansicht hat, die dynamische Diagramme und Diagramme enthält, die unter Verwendung der Google Diagramme erstellt werden. Das Problem besteht darin, dass der Knoten-Webshot-Methodenaufruf ein leeres Bild dieser Seite generiert, sobald der Graph erstellt wurde (in diesem Fall ein Blasendiagramm). Aber wenn ich die Route im Browser öffne, erzeugt es die Grafik perfekt.Webshot einer URL konnte nicht erstellt werden

Dies ist die Art von Graphen, die dynamisch generiert werden - http://jsbin.com/vewesafegi/edit?html,js,output

Und das ist das Segel js Knoten-webshot Code, den ich seine webshot zu erzeugen verwenden.

var options = { 
     screenSize: { 
      width: 710, 
      height: 500 
     }, 
     shotSize: { 
      width: 710, 
      height: 'all' 
     }, 
     userAgent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g', 
     siteType: 'url', 
     renderDelay: 500, 
     quality: 50 
    }; 

    webshot('http://localhost:1337/generatedChart','Chart.png', options, function(err) { 
     //do something 
     res.ok(); 
    }); 

Antwort

3

Ordnung ... Also las ich die Dokumentation node-webshot und fand heraus, dass in den options von webshot, ich einen Schlüssel takeShotOnCallback genannt festlegen kann, die auf true gesetzt, wenn mir erlaubt, einen Rückruf zu haben (window.callPhantom('takeShot');) von der Seite einmal geladen.

Dieser Rückruf teilt dem Webshot-Aufruf mit, den Screenshot der Seite zu erstellen. Mehr hier - https://github.com/brenden/node-webshot#options

Und der Grund, warum der generierte Schuss leer war, lag daran, dass die Seite nicht mit den dynamisch erzeugten Graphen geladen war, als der Webshot gemacht wurde.

Verwandte Themen