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

window.onbeforeunload = warnuser;

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

4

2 回答 2

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/

请注意,如果用户单击“刷新”按钮,这将不起作用。这是不可能拦截的。

于 2012-07-01T21:58:16.117 回答
0

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

于 2012-07-01T22:07:01.837 回答