render.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. var panelsToLoad = angular.element('div.panel').length;
  32. return rootScope.performance.panelsRendered >= panelsToLoad;
  33. });
  34. if (canvas || tries === 1000) {
  35. page.render(params.png);
  36. phantom.exit();
  37. }
  38. else {
  39. tries++;
  40. setTimeout(checkIsReady, 10);
  41. }
  42. }
  43. setTimeout(checkIsReady, 200);
  44. });