私たちのウェブサイトには、ユーザーが記入して提出できるフォームがあります。場合によっては、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/ja/JavaScript/Reference/Global_Objects/eval#Don%27t_use_evalも参照してください。 – Zeta
私はそれを行うことができるか分からなかった。よく見えます。ありがとう。 –