我遇到了JavaScript魔术问题。当我执行此代码时:
var page = require('webpage').create();
var url="http://google.com";
page.open(url, function (status){
if (status!== "success") {
console.log("Fail to load: "+url)
}else{
console.log('1');
page.evaluate(function() {
console.log('2');
});
console.log('3');
}
phantom.exit();
});
控制台只有1和3而没有2.有谁可以说为什么?
如果我在我的代码DOM manipulation example之后粘贴(但它永远不会执行)我有两个。我忘了重要的事吗?
答案 0 :(得分:12)
默认情况下,PhantomJS不会在.evaluate()语句中记录控制台消息。只需加入
page.onConsoleMessage = function (msg) {
console.log(msg);
};
有关详细信息/深入示例,请参阅此页:
http://code.google.com/p/phantomjs/wiki/QuickStart#Code_Evaluation
答案 1 :(得分:5)
来自网页的任何控制台消息,包括来自内部代码的消息 evaluate(),默认情况下不会显示。要覆盖它 行为,使用onConsoleMessage回调。
答案 2 :(得分:0)
如果您只想要选择日志,则可以返回您要打印的值。
例如:
console.log(page.evaluate(function() {
return '2';
});