1

我的一些用户在键入时不小心按了 F5,导致他们丢失了所有键入的内容。我不需要阻止点击刷新按钮。

我尝试使用以下 javascript,但它仅在用户不关注 Silverlight 应用程序时有效(即当用户单击 SL 应用程序之外的某个位置时它有效,但当用户关注时不会触发 onkeydown 事件SL)。

document.onkeydown=function(e) {
    var event = window.event || e;
    if (event.keyCode == 116) {
        event.keyCode = 0;
        alert("test");
        return false;
    }
}
4

2 回答 2

1

处理这种情况的最佳方法可能是使用onbeforeunload 事件并要求用户确认。通过这种方式,您可以从合法的选项卡中根除意外刷新或关闭的选项卡,而无需处理所有可能的快捷方式。

window.onbeforeunload = function(e) {
    return 'Are you sure you want to leave without saving your changes?';
};

您甚至可以仅在有一些未保存的更改时才显示确认对话框。

于 2013-03-08T16:00:03.767 回答
-2

我会说,像这样的东西?

document.onkeydown = function() 
{
    switch (event.keyCode) 
    {
        case 116 : //F5 button
            event.returnValue = false;
            event.keyCode = 0;
            return false;
        case 82 : //R button
            if (event.ctrlKey) 
            {
                event.returnValue = false;
                event.keyCode = 0;
                return false;
            }
    }
}

注意: ctrl + r 也是刷新的快捷方式

于 2013-03-08T14:52:02.737 回答