Я пишу script, который генерирует png-изображения с каждой страницы моего интерфейса. Я использую angular для пользовательского интерфейса и захватываю страницы phantom.
Время просмотра до тех пор, пока angular не закончит рендеринг, поэтому я должен немного подождать, прежде чем захватить:
var page = require('webpage').create();
page.open('http://localhost:9000/', function () {
window.setTimeout(function () {
page.render('snapshot.png');
phantom.exit();
}, 2000);
});
Интересно, есть ли лучший способ достичь этого. Я обнаружил, что angular может генерировать событие, когда страница полностью отображается:
$scope.$on('$viewContentLoaded', function () {
// do something
});
И нашел способ связи с phantom с onCallback
, чтобы я мог написать что-то вроде:
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
Затем в другом месте в phantom script:
page.onCallback = function() {
page.render('snapshot.png');
phantom.exit();
};
Но я теряюсь в том, как вводить дескриптор angular $viewContentLoaded
из phantom script.
Я не знаю, можно ли evaluate
/evalueateAsyn
...
page.evaluateAsync(function () {
$scope.$on('$viewContentLoaded', function () {
window.callPhantom({ hello: 'world' });
});
});
Возможно, я мог бы каким-то образом получить доступ к $scope
.
Любые идеи?