1
otakustay 2013-05-04 16:50:10 +08:00 2
这个问题的核心不是技术,而是什么是“js渲染完毕”。
我举个例子,有一个页面,每5秒从后端拉一次数据,在页面上更新几个条目,永远这样不结束,那么这个页面什么时候“渲染完毕”? 如果你可以定出一个渲染完毕的标准,那么你就可以通过定时地检测这个标准来判断,比如下面的代码是把“一个id叫username的span元素出现”作为标准的(不少网站是页面展现完再去加载一次当前用户信息,在右上角显示个用户名,以此为例): function check() { // 在这里写你自已的标准 return document.getElementById('username'); } function waitForReady() { if (!check()) { return setTimeout(waitForReady, 50); // 每50毫秒检查一下 } else { // phantom与页面的通信推荐用alert来做 alert('ready'); } } waitForReady(); 在phantom中的代码这么来(已经有点忘了phantom的API了): var page = new WebPage(); page.onAlert = function (message) { if (message === 'ready') { takeScreenshot(page); // 截图 } } page.open(url, function () { console.log('page loaded but not ready'); }); |
3
ghbjy1128 2013-05-05 06:59:58 +08:00
js渲染? 如果是想得到JS的运行状态的话,当然是创建自定义事件。
|