我使用如下代码通过phantomJS呈现页面的javascript行为
var page = require('webpage').create();
page.viewportSize = { width: 1920, height: 1080 };
page.open('index.html', function(){
(function snap(i){
if(i < 5000){
window.setTimeout(function(){
page.render('i+'.png');
snap(++i);
}, 20);
}
else{
phantom.exit();
}
})(0);
});问题是当以高分辨率渲染时,CPU被大量使用,因此javascript性能变得较慢。例如,如果一个javascript操作需要100秒,那么在重载下将需要500秒。因此,捕获的图像仅占javascript场景的1/5。
有没有可能保证javascript事件在最初的时间范围内完成?或者根据原始时间框架而不是发生的时间框架来呈现javascript?
发布于 2018-02-20 05:22:37
可以保证javascript事件在最初的时间范围内完成吗?
不,这是不可能的,因为没有“原始时间框架”的概念。
相反,您需要做的就是加快捕获能力。为此,您必须放弃PhantomJS。幸运的是,Chromium本身有一个非常好的标签捕获API,可以实时捕获视频。
https://stackoverflow.com/questions/48874334
复制相似问题