[英]Why doesn't Phantom.js evaluate work with my Backbone app?
page.open(My_url, function(status) {
page.evaluate(function() {
var html = document.documentElement.outerHTML;
return html;
}, function(result){
res.send(result);
});
});
我有一個Backbone應用程序。 “ My_url”指向該主干頁面。
當我運行此代碼時,outerHTML不包含渲染的視圖。 它只具有基本的CSS /腳本/容器持有人。
就像Backbone應用程序根本沒有運行。 如何使valuate()返回完全渲染的Backbone應用程序(在所有ajax調用和填充之后)?
畢竟,這就是Phantom.js的重點
加載頁面后立即評估頁面並不總是足夠的。 有時,由於在頁面上編寫JavaScript的方式不同,您將不得不等待並允許頁面的JavaScript執行。 為此,我建議您嘗試添加一個等待時間,然后再執行評估。 例如
function ( status ) {
if ( status === 'fail' ) {
phantom.exit( 1 );
return; // essential, if you don't, below will be executed
}
window.setTimeout(
function () {
var result = page.evaluate(
function () {
var html = document.documentElement.outerHTML;
return html;
}
);
res.send( result );
},
1000 // wait 1,000ms (1s)
);
}
如果您發現有必要等待,那么您可能需要等待一些事情。 為此,在Internet上尋找一個waitFor
或類似的函數,它將允許您的腳本連續輪詢直到出現特定的DOM元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.