gpt4 book ai didi

phantomjs page.evaluate 没有登录到控制台

转载 作者:行者123 更新时间:2023-12-03 09:15:14 24 4
gpt4 key购买 nike

我是PhantomJs新手。刚刚在这个网站上查看了一个类似的帖子。我的问题是为什么 'foo' 没有记录到控制台或打印出来?

var page = require('webpage').create()
var foo = 42;

function evaluate(page, func) {
var args = [].slice.call(arguments, 2);
var fn = "function() { return (" + func.toString() + ").apply(this, " + JSON.stringify(args) + ");}";
return page.evaluate(fn);
}

page.open('http://google.com', function() {
var foo = 42;
evaluate(page, function(foo) {
console.log(foo);
},foo);

});

最佳答案

调用 page.evaluate() 在沙箱中运行您评估的代码。沙箱的控制台与 PhantomJS 的控制台不同。

添加到您的脚本中的以下几行会将您页面的控制台打印到 stderr。

var system = require('system');

page.onConsoleMessage = function(msg) {
system.stderr.writeLine('console: ' + msg);
};

更完整的实现是:
var page = require('webpage').create()
var system = require('system');
var foo = 42;

page.onConsoleMessage = function(msg) {
system.stderr.writeLine( 'console: ' + msg );
};

function evaluate(page, func) {
var args = [].slice.call(arguments, 2);
var fn = "function() { return (" + func.toString() + ").apply(this, " + JSON.stringify(args) + ");}";
return page.evaluate(fn);
}

page.open(
'http://google.com',
function() {
var foo = 42;
evaluate(
page,
function(foo) {
console.log(foo);
},
foo
);

console.log( "Done" );

phantom.exit( 0 ); // must exit somewhere in the script
}
);

输出:
$ phantomjs /tmp/idiot.js 
console: 42
Done

顺便说一句,如果您只想沙盒测试评估函数,您可以使用“about:blank”作为您的 URL 调用 page.open。

关于phantomjs page.evaluate 没有登录到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701208/

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