我搜索了2天但仍然没有变化,我需要在foo
内通过引用page.evaluate
变量,但似乎不可能。
var foo = 42;
setInterval(function(){
console.log('outer '+foo++);
},1000);
page.open(url, function() {
var pe = page.evaluate(function(foo) {
setInterval(function(){
console.log('inner inner '+foo);
},1000);
},foo);
setInterval(function(){
console.log('inner '+foo);
},1000);
}.bind(foo));
外部和内部都在更新,但inner inner
foo是静态的。我也试过绑定但是它返回了这个错误:
SyntaxError: Expected token ']'
undefined:2 in evaluateJavaScript
phantomjs://platform/webpage.js:390 in evaluate
phantomjs://code/foo.js:37
:0
phantomjs://platform/webpage.js:286 in _onPageOpenFinished
修改: 刚发现函数evaluate是一个沙盒,我只是好奇是否有这样的消息传递或IPC之间的某种方式?
答案 0 :(得分:0)
如果在这两者之间有某种方式如消息传递或IPC?
确实有 - jq
可以将一个简单的变量或序列化对象返回到外部上下文:
page.evaluate
你没有在你的问题中明确说明它,但是从我接受的代码示例中你想要监视实时页面上的一些变量。有可能:
var value_from_sandbox = page.evaluate(function(){ return 42; });
还有一种方法可以从沙箱中调用“home”:page.callPhantom
,但请注意,它仍然在文档中标记为“实验性”。