我們在我們的網站上有一個表格,用戶可以填寫並提交。有時,他們需要更長的時間填寫表格,而不是我們的20分鐘會話超時。使用clearTimeout後,setTimeout不起作用
因此,我已經編寫了功能來在超時前2分鐘彈出一條消息來警告用戶,並提供保存並繼續(更新會話)的選項。如果留下警告,它會自動保存他們的工作並在2分鐘後註銷。
如果該消息被忽略,它自動保存工作並將它們記錄下來。如果他們點擊保存並繼續保存,則會保存正常,並且該消息在再過20分鐘後(在測試時間縮短的情況下)彈出備份,但是,後續時間如果再過2分鐘,則不會將其註銷它被忽略。
這是我寫的JavaScript。任何人都能看到任何問題?
init();
在<body>
標記中被稱爲onLoad
。
var logoutTimer = setTimeout('saveAndLogOut();', 1000 * 60 * 1.5);
function init() {
setTimeout('expirationWarning();', 1000 * 60 * 1);
logoutTimer;
}
function expirationWarning() {
$('#session-expiry-warning').dialog({
show: 'fade',
hide: 'fade',
title: 'Your session is about to expire...',
buttons: {
"Save and Continue": function() {
ajaxSave('saved');
clearTimeout(logoutTimer);
init();
$(this).dialog("close");
}
},
width: 550,
closeOnEscape: false,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
}
function saveAndLogOut() {
ajaxSave('autosaved');
setTimeout("parent.document.location.href = '../logout.asp';", 5000);
}
在此先感謝。
['setTimeout'(https://developer.mozilla.org/en/DOM/window.setTimeout)接受一個函數,而不是代碼。不建議使用代碼**。你可能想改變它,例如'var logoutTimer = setTimeout(saveAndLogOut,1000 * 60 * 1.5);'。另見https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval#Don%27t_use_eval! – Zeta 2012-04-16 10:29:17
沒有意識到我可以做到這一點。看起來很整潔。謝謝。 – 2012-04-16 10:42:00