为什么PhantomJS渲染页面使用window.setTimeout

NBP*_*ino 4 javascript phantomjs

我目前正在使用PhantomJS进行一些doc的报告,并在一些例子中查找我发现了这个.

window.setTimeout(function () {
    page.render(output);
    console.log(output);
    phantom.exit();
}, 200);
Run Code Online (Sandbox Code Playgroud)

我想知道为什么使用window.setTimeout ?? 它会影响网页渲染吗?

谢谢......尼克.

Cyb*_*axs 6

仅在加载页面时才调用page.open回调.这并不意味着页面中已加载了所有内容,并且js已完全执行.

此外,网页上的js可能不会立即执行,特别是如果网站使用AngularJS或Ember.js等MVC客户端框架:在页面加载事件之后会完成很多工作.

使用setTimeout会有一点延迟,以确保您的页面完全呈现.

有时候200毫秒没有用,你必须增加持续时间.

另一种方法是使用waitfor.js示例:等待直到测试条件为真,例如元素是可见的.