使用Javascript在页面刷新时调用函数

时间:2012-07-01 21:53:56

标签: javascript onbeforeunload

function warnuser()
{
    return "Don't refresh the page.";
}

window.onbeforeunload = warnuser;

如果用户刷新页面并且用户在确认框中单击“离开此页面”,我想调用javascript函数,否则不会! 我对如何做到这一点很困惑。 谢谢

2 个答案:

答案 0 :(得分:2)

您需要拦截F5按键并仅在这种情况下设置onbeforeunload处理程序:

document.addEventListener('keydown', function(e) {
    if(e.which == 116) {
        window.onbeforeunload = function() {
            window.onbeforeunload = null;
            return "Do you really want to refresh the page?";
        }
    }
}, false);

演示:http://jsfiddle.net/ejDrq/

请注意,如果用户点击“刷新”按钮,则此功能无效。拦截这个是不可能的。

答案 1 :(得分:0)

如果您可以控制托管该页面的服务器端,那么您可以使用semaphorewiki:semaphore)进行逻辑处理。基本上它是一个旋转锁,它将在他们的服务器端会话中实现。如果页面状态已进入且未以安全方式退出,则重置页面状态。当然,与所有旋转锁一样,必须有一个安全状态来清除锁定。