检测页面是刷新(重新加载)还是窗口关闭

时间:2016-10-05 15:51:32

标签: javascript jquery ajax

我有一个计时器功能,我需要在页面刷新页面时继续计时器,并在页面关闭时进行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) {})
    });
});

1 个答案:

答案 0 :(得分:0)

使用调用的onbeforeunload事件在刷新页面之前,Tab已关闭或浏览器已关闭。

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';
};

您可以从浏览器控制台运行此脚本并检查结果。