2013-05-31 49 views
2
var page = require("webpage").create(), 

    loginPage = "https://subscriber.hoovers.com/H/login/login.html"; 

page.onConsoleMessage = function (msg) { 

    console.log(msg); 
}; 

page.open(loginPage); 

page.onLoadFinished = function (status) { 

    var url = page.url; 
    console.log("Status: " + status); 
    console.log("Loaded: " + url); 
    pageload(url); 
    page.render('url.png'); 

} 

function pageload(url) { 

    if (url == loginPage) { 

     console.log("From loginPage"); 

     page.evaluate(function() { 

      console.log("From pageload"); 

     }); 
    } 
} 
+1

它可能是相应版本的phantomjs中的一个bug,它现在可用,版本为1.9.8 –

+0

由于OP的问题在当前版本的PhantomJS中没有发生,所以它不相关。 – evanmcdonnal

回答

-1

从page.evaluate()页上下文(page.onConsoleMessage)获得控制台消息对于模糊的原因(错误WebKit中或PhantomJs)的console.log不内页的作品。评估。

你应该改变你的代码,以便使用console.info,console.warn或console.error。

var page = require("webpage").create(); 
var loginPage = "https://subscriber.hoovers.com/H/login/login.html"; 

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

page.open(loginPage); 

page.onLoadFinished = function (status) { 

    var url = page.url; 
    console.log("Status: " + status); 
    console.log("Loaded: " + url); 
    pageload(url); 
    page.render('url.png'); 
    phantom.exit(0); 
} 

function pageload(url) { 

    if (url == loginPage) { 
     console.log("From loginPage"); 
     page.evaluate(function() { 
      console.info("From pageload"); 
     }); 
    } 
} 
1

错误!

周围的工作被分配:

window.console.log = function(msg) { alert(msg) }; 

的page.evaluate

然后用内:

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

赶上警报

-1

确保您phantomjs设置的作用不禁用执行javascript

page.settings.javascriptEnabled = true;