render.js 925 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. var page = require('webpage').create();
  2. var args = require('system').args;
  3. var params = {};
  4. var regexp = /^([^=]+)=([^$]+)/;
  5. args.forEach(function(arg) {
  6. var parts = arg.match(regexp);
  7. if (!parts) { return; }
  8. params[parts[1]] = parts[2];
  9. });
  10. var usage = "url=<url> png=<filename> width=<width> height=<height>";
  11. if (!params.url || !params.png) {
  12. console.log(usage);
  13. phantom.exit();
  14. }
  15. page.viewportSize = {
  16. width: params.width || '800',
  17. height: params.height || '400'
  18. };
  19. var tries = 0;
  20. page.open(params.url, function (status) {
  21. console.log('Loading a web page: ' + params.url);
  22. function checkIsReady() {
  23. var canvas = page.evaluate(function() {
  24. return $('canvas').length > 0;
  25. });
  26. if (canvas || tries === 10000) {
  27. page.render(params.png);
  28. phantom.exit();
  29. }
  30. else {
  31. tries++;
  32. setTimeout(checkIsReady, 10);
  33. }
  34. }
  35. setTimeout(checkIsReady, 200);
  36. });