內部page.evaluate phantom.exit()()我有2個代碼示例如下:不能把在phantomjs
var page = require('webpage').create();
page.open('https://www.youtube.com', function(s) {
console.log(s);
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
var t = page.evaluate(function() {
console.log('here');
phantom.exit(); // case 1: inside page.evaluate()
});
});
});
- >在這種情況下,phantom.exit()內放page.evaluate (),並出現錯誤: 「的ReferenceError:找不到變量:幽靈」
var page = require('webpage').create();
page.open('https://www.youtube.com', function(s) {
console.log(s);
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
var t = page.evaluate(function() {
console.log('here');
});
phantom.exit(); // case 2: outside page.evaluate()
});
});
- >如果2:phantom.exit()放在外面page.evaluate()。沒有錯誤,但'這裏'沒有打印出來。
=>以上兩種方式都不能打印出'這裏'。有沒有什麼有效的方法來打印'在這裏'沒有錯誤?
謝謝,我明白了你的觀點:) 我可以問你另一個問題嗎?如果我在page.evaluate(),$ .post(url,function(data){//一些代碼})中放入一個ajax請求,我如何獲取數據並將其打印在page.evaluate()之外? –
@MrCold這是一個有趣的問題。你可以強制ajax調用是同步的,這是不好的做法,但在腳本瀏覽器中不會有害。您還可以使用主機腳本和頁面之間的消息傳遞(使用前綴/協議)來回發送信息。然後你的工作流成爲一個正常的MPI異步。 – ssube
@MrCold我給你覆蓋了[this](http://stackoverflow.com/a/28684532/1816580) –