2017-08-10 38 views
0

考慮代碼node-phantom如何將數據傳遞給page.eveluate函數?

page.evaluate(function() { 
    return document.getElementById('foo').innerHTML; 
}).then(function(html){ 
    console.log(html); 
}); 

的功能可按在HTML頁面中直接執行,所以加入一個這樣的參數:

someExternalVariable = 'foo'; 
page.evaluate(function() { 
    return document.getElementById(someExternalVariable).innerHTML; 
}).then(function(html){ 
    console.log(html); 
}); 

信息未定義someExternalVariable,因爲打開的頁面不知道任何有關someExternalVariable。那麼如何通過外部數據來評估phantomjs-node中的函數呢?

回答

1

如果變量是序列化,你可以如果不是這樣

someExternalVariable = 'foo'; 
page.evaluate(function(id) { 
    return document.getElementById(id).innerHTML; 
}, someExternalVariable).then(function(html){ 
    console.log(html); 
}) 

做(說你想傳遞與關閉功能)我懷疑是有辦法做到這一點。 Docs

注意:參數和評估函數的返回值必須爲 爲簡單的原始對象。經驗法則:如果它可以是通過JSON序列化的 ,那就沒問題。