Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数据传递到page.eveluate函数?_Javascript_Node.js_Ecmascript 6_Phantomjs_Phantomjs Node - Fatal编程技术网

Javascript 如何将数据传递到page.eveluate函数?

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

考虑以下代码:

该函数直接在html页面中执行,因此添加如下参数:

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);
})