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 操作の例の後に貼り付けると(ただし、実行されることはありません)、2 つ取得できます。私は何か重要なことを忘れましたか?

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

Google コードから

evaluate() 内のコードを含む Web ページからのコンソール メッセージは、デフォルトでは表示されません。この動作をオーバーライドするには、onConsoleMessage コールバックを使用します。

于 2012-06-20T14:29:32.840 に答える
0

選択したログのみを取得する場合は、出力したい値を返すことができます。

例えば:

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