PhantomJS中的评估似乎不起作用

时间:2012-06-20 14:24:24

标签: javascript phantomjs

我遇到了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之后粘贴(但它永远不会执行)我有两个。我忘了重要的事吗?

3 个答案:

答案 0 :(得分:12)

默认情况下,PhantomJS不会在.evaluate()语句中记录控制台消息。只需加入

page.onConsoleMessage = function (msg) {
    console.log(msg);
};

有关详细信息/深入示例,请参阅此页:

http://code.google.com/p/phantomjs/wiki/QuickStart#Code_Evaluation

答案 1 :(得分:5)

来自Google Code

  

来自网页的任何控制台消息,包括来自内部代码的消息   evaluate(),默认情况下不会显示。要覆盖它   行为,使用onConsoleMessage回调。

答案 2 :(得分:0)

如果您只想要选择日志,则可以返回您要打印的值。

例如:

console.log(page.evaluate(function() {
    return '2';
});