4

I have a problem with JavaScript magic. When I execute this code:

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(); }); 

console have only 1 and 3 and no 2. Can anyone say why?

If I paste after my code DOM manipulation example (but it never execute) I have my two. Did I forget something important?

3 Answers 3

13

PhantomJS won't log console messages in .evaluate() statements by default. Just include

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

See this page for more details/in-depth example:

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

Sign up to request clarification or add additional context in comments.

Comments

5

From Google Code

Any console message from a web page, including from the code inside evaluate(), will not be displayed by default. To override this behavior, use the onConsoleMessage callback.

Comments

0

If you only want select logs to come through, you can return the value that you'd like to print.

For example:

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.