0
私はタイマー機能を持っています。ページがリフレッシュされたときにタイマーを継続し、ページが閉じられるとajaxコールを行う必要があります。ワーキング)。これどうやってするの?ページが更新される前に、タブが閉じられているか、ブラウザを閉じると呼ばれるページがリフレッシュ(リロード)されるか、ウィンドウが閉じられるかを検出します。
$(document).ready(function() {
function setTimer(timeSpent) {
$.post('./modules/ajax/task.php', {time:timeSpent}, function(data) {
$('#timer').timer({
seconds: data.timerTime
});
if(!isNaN(timeSpent)){
$('#timer').timer('remove');
}
}, 'json');
}
setTimer('start');
$(window).on('blur', function() {
setTimer($('#timer').data('seconds'));
}).on('focus', function() {
setTimer('resume');
}).unload(function() {
var timer = $('#timer'),
timeSpent = timer.data('seconds'),
userID = timer.data('userid'),
taskID = timer.data('taskid');
$.post('./modules/ajax/task.php', {
timeSpent: timeSpent,
userID: userID,
taskID: taskID,
save: 'save'
}, function(data) {})
});
});
'onbeforeunload'イベントは、ページがアンロードされる前に呼び出されますが、ページがリフレッシュされているか、ブラウザー/タブが閉じられているか、ユーザーが別のページに移動したかどうかを知るための仕組みはありません。より良い解決策は、ページがどの状態にあるかにかかわらず、静止日(ローカルまたはリモートのいずれか)を保存し、その日付にカウントダウンすることです。 –
'ページが閉じられたときにajax呼び出しを行います。ローカルサーバーではなく、リモートサーバーではなく、確実に –