Reputation: 1234
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?
Upvotes: 4
Views: 2806
Reputation: 1917
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';
});
Upvotes: 0
Reputation: 39512
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
Upvotes: 13
Reputation: 13275
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.
Upvotes: 5