4

我对 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 操作示例之后粘贴(但它从不执行)我有我的两个。我是不是忘记了什么重要的事情?

4

3 回答 3

13

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

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

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

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

于 2012-06-20T14:27:33.937 回答
5

来自谷歌代码

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

于 2012-06-20T14:29:32.840 回答
0

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

例如:

console.log(page.evaluate(function() {
    return '2';
});
于 2013-07-10T20:57:44.970 回答