我有一個網站與登錄表單。如果用戶沒有登錄並嘗試訪問內部頁面,它將被重定向到默認頁面。例如,如果我嘗試訪問 http://siteURL.PhantomPrint.aspx
我將被重定向到http://siteURL/Default.aspx?ReturnUrl=PhantomPrint.aspx.
並且登錄後會自動重定向到頁面。Phantomjs登錄,重定向和頁面後頁面完成
在重定向後,我想用Phantomjs呈現頁面並將其保存爲pdf。問題是渲染髮生在頁面加載完成之前,我只能使用超時才能正確渲染頁面。在這種情況下,如果頁面加載比正常時間更長,則導致的pdf不是正確的。
下面你可以找到Java腳本代碼:
var page = require('webpage').create();
var index = 0,
page.onConsoleMessage = function (msg) {
console.log(msg);
};
var steps = [
function() {
//Load Login Page
page.open("http://siteURL.PhantomPrint.aspx", function() {
//Enter Credentials
page.evaluate(function() {
console.log("filling inputs");
var usernameInput = document.getElementById("txtUsername");
usernameInput.value = "user";
var passwordInput = document.getElementById("txtPassword");
passwordInput.value = "password";
var loginButton = document.getElementById("btnLogin");
loginButton.click();
console.log("login button was submitted");
});
});
},
function() {
// page.onLoadFinished = function() {
// Render the page to pdf
page.render('example.png');
phantom.exit();
console.log("rendering finished");
//});
}
];
interval = setInterval(function() {
if (!loadInProgress && typeof steps[testindex] == "function") {
console.log("step " + (testindex + 1));
steps[testindex]();
testindex++;
}
if (typeof steps[testindex] != "function") {
console.log("test complete!");
phantom.exit();
}
}, 1000);
我如何能保證渲染任何建議只重定向頁面加載完成,歡迎後進行。
我沒有看到任何遞歸。 – 2014-09-10 15:08:46