Javascript 如何将数据传递到page.eveluate函数?
考虑以下代码: 该函数直接在html页面中执行,因此添加如下参数:Javascript 如何将数据传递到page.eveluate函数?,javascript,node.js,ecmascript-6,phantomjs,phantomjs-node,Javascript,Node.js,Ecmascript 6,Phantomjs,Phantomjs Node,考虑以下代码: 该函数直接在html页面中执行,因此添加如下参数: someExternalVariable = 'foo'; page.evaluate(function() { return document.getElementById(someExternalVariable).innerHTML; }).then(function(html){ console.log(html); }); 导致未定义的someExternalVariable,因为打开的页面对some
someExternalVariable = 'foo';
page.evaluate(function() {
return document.getElementById(someExternalVariable).innerHTML;
}).then(function(html){
console.log(html);
});
导致未定义的
someExternalVariable
,因为打开的页面对someExternalVariable
一无所知。那么如何将外部数据传递给函数求值呢?如果变量是可序列化的,您可以这样做
someExternalVariable = 'foo';
page.evaluate(function(id) {
return document.getElementById(id).innerHTML;
}, someExternalVariable ).then(function(html){
console.log(html);
})
如果不是(比如你想传递一个带闭包的函数),我怀疑有没有办法做到这一点
注意:参数和evaluate函数的返回值必须
是一个简单的原始对象。经验法则:如果可以的话
通过JSON序列化,就可以了
someExternalVariable = 'foo';
page.evaluate(function(id) {
return document.getElementById(id).innerHTML;
}, someExternalVariable ).then(function(html){
console.log(html);
})