render.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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> cookiename=<cookiename> sessionid=<sessionid> domain=<domain>";
  11. if (!params.url || !params.png || !params.cookiename || ! params.sessionid || !params.domain) {
  12. console.log(usage);
  13. phantom.exit();
  14. }
  15. phantom.addCookie({
  16. 'name': params.cookiename,
  17. 'value': params.sessionid,
  18. 'domain': params.domain
  19. });
  20. page.viewportSize = {
  21. width: params.width || '800',
  22. height: params.height || '400'
  23. };
  24. var tries = 0;
  25. page.open(params.url, function (status) {
  26. console.log('Loading a web page: ' + params.url);
  27. function checkIsReady() {
  28. var canvas = page.evaluate(function() {
  29. var body = angular.element(document.body); // 1
  30. var rootScope = body.scope().$root;
  31. return rootScope.performance.panelsRendered > 0;
  32. });
  33. if (canvas || tries === 1000) {
  34. page.render(params.png);
  35. phantom.exit();
  36. }
  37. else {
  38. tries++;
  39. setTimeout(checkIsReady, 10);
  40. }
  41. }
  42. setTimeout(checkIsReady, 200);
  43. });