gpt4 book ai didi

javascript - PhantomJS 通过引用将变量传递给 page.evaluate

转载 作者:行者123 更新时间:2023-11-28 04:03:52 25 4
gpt4 key购买 nike

我已经搜索了 2 天,但仍然没有任何变化,我需要在 page.evaluate 内引用 foo 变量,但似乎不可能。

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

外部和内部都在更新,但内部内部 foo 是静态的。我也尝试过绑定(bind),但它返回此错误:

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

编辑:刚刚发现函数评估是一个沙箱,我只是好奇这两者之间是否有消息传递或IPC之类的方式?

最佳答案

if there is some way like message passing or IPC between these two?

确实有 - page.evaluate 可以将简单变量或序列化对象返回到外部上下文:

var value_from_sandbox = page.evaluate(function(){ return 42; });

您没有在问题中明确说明,但从代码示例中我认为您想要监视实时页面上的某些变量。有可能:

page.open(url, function() {

// Set interval function in PhantomJS scope
// that will extract a variable from the page once a second
setInterval(function(){

var foo = page.evaluate(function() {
return document.getElementById('foo').innerHTML;
}

console.log(foo);

}, 1000);

});

还有一种从沙盒中调用“家”的方法:page.callPhantom ,但请注意,它在文档中仍被标记为“实验性”。

关于javascript - PhantomJS 通过引用将变量传递给 page.evaluate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com