Избегайте обновления браузера, используя JavaScript [duplicate]

0

Я знаю, что это не сложно найти, но я хочу отключить обновление страницы в браузере. Я разрабатываю приложение для экзамена, где, когда пользователи начинают тест, он откроется в новом окне. но я не хочу, чтобы пользователи обновляли эту тестовую страницу.

Я мог бы сделать это, используя ниже код 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;
            }
    }
}

но когда пользователи переходят в панель местоположения /url и фокусируют его и нажимают кнопку f5, страница обновляется. Не только f5, но и для shift + f5, браузер показывает такое же поведение. как этого избежать?

Пожалуйста помоги.

  • 0
    Что если кто-то просто закроет новое окно и запустит другое?
  • 0
    Вы действительно не можете избежать этого
Теги:

2 ответа

1

Что-то вроде этого должно приблизиться к вашей цели.

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

Проблема в том, что то, что вы пытаетесь сделать, принципиально опасно, так как веб-страницы слишком сильно контролируют поведение браузера, и их можно легко злоупотреблять недобросовестными или багги веб-сайтами.

Такие вещи, как закрытие страниц, обновление страниц и т.д., Невозможно заблокировать. Даже если вы блокируете сочетание клавиш, люди всегда могут просто перейти к URL снова.

Лучше сказать, почему вы не хотите, чтобы они обновлялись и исправляли это. Например, если это связано с тем, что у вас есть обратный отсчет javascript для времени тестирования, то это можно устранить, записав время, которое они начали в базе данных, и когда они обновляют возобновление обратного отсчета с правильной точки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню