使用JavaScript避免浏览器刷新

时间:2014-04-03 14:02:31

标签: javascript jquery

我知道这不是一个难以找到的答案,但我想在浏览器中禁用页面刷新。我正在开发一个考试应用程序,当用户开始测试时,它将在新窗口中打开。但我不希望用户刷新此测试页。

我可以使用以下JavaScript代码执行此操作:

document.onkeydown = function (e) {
    var key;
    if (window.event) {
        key = event.keyCode
    } else {
        var unicode = e.keyCode ? e.keyCode : e.charCode
        key = unicode
    }
    switch (key) { //event.keyCode
        case 116:
            //F5 button
            alert("11");
            event.returnValue = false;
            key = 0; //event.keyCode = 0;
            return false;
        case 82:
            //R button
            if (event.ctrlKey) {
                alert("11");
                event.returnValue = false;
                key = 0; //event.keyCode = 0;
                return false;
            }
    }
}

但是当用户转到位置/网址栏并将其对焦并按下f5按钮时,页面会刷新。不仅仅是f5而且对于shift + f5,浏览器显示相同的行为。怎么避免这个?

请帮忙。

2 个答案:

答案 0 :(得分:1)

这样的事情可以让你更接近你的目标。

window.onload = function () {
    document.onkeydown = function (e) {
        return (e.which || e.keyCode) != 116;
    };
}

答案 1 :(得分:0)

问题在于,您尝试做的事情从根本上是危险的,因为允许网页过多地控制浏览器行为很容易被不道德或错误的网站滥用。

关闭页面,刷新页面等内容无法阻止。即使您阻止了键盘快捷键,人们也可以随时再次导航到该URL。

更好的问题是说你为什么不希望它们刷新并修复它。例如,如果因为你有一个测试时间的javascript倒计时,那么可以通过记录他们在数据库中开始的时间以及他们刷新从正确的点恢复倒计时来修复。