2016-10-05 3 views
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) {}) 
    }); 
}); 
+3

'onbeforeunload'イベントは、ページがアンロードされる前に呼び出されますが、ページがリフレッシュされているか、ブラウザー/タブが閉じられているか、ユーザーが別のページに移動したかどうかを知るための仕組みはありません。より良い解決策は、ページがどの状態にあるかにかかわらず、静止日(ローカルまたはリモートのいずれか)を保存し、その日付にカウントダウンすることです。 –

+0

'ページが閉じられたときにajax呼び出しを行います。ローカルサーバーではなく、リモートサーバーではなく、確実に –

答えて

0

使用onbeforeunloadイベント:

は、私は、次のコードを持っています。

window.onbeforeunload = function (e) { 
    e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
     e.returnValue = 'Any string'; 
    } 

    // For Safari 
    return 'Any string'; 
}; 

ブラウザコンソールからこのスクリプトを実行して、結果を確認できます。

関連する問題