Запретить любую форму обновления страницы с помощью jQuery / Javascript

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

  1. В любое время пользователь нажимает F5 или кнопку обновления сверху. Он должен получить предупреждение, говорящее

    Вы не можете обновить страницу.

  2. Также, если пользователь открывает новую вкладку и пытается получить доступ к тому же URL-адресу в предыдущей вкладке, он должен получить предупреждение

    Вы не можете открыть одну и ту же страницу в 2 вкладках

В любом случае я могу сделать это с помощью JavaScript или jQuery? Первый пункт действительно важен.

76
задан H. Pauwelyn 16 December 2015 в 14:31
поделиться

3 ответа

# 1 можно реализовать через window.onbeforeunload .

Например:

<script type="text/javascript">
    window.onbeforeunload = function() {
        return "Dude, are you sure you want to leave? Think of the kittens!";
    }
</script>

Пользователь получит подсказку с сообщением, и ему будет предоставлена ​​возможность остаться на странице или продолжить свой путь. Это становится все более распространенным явлением. Stack Overflow сделает это, если вы попытаетесь уйти со страницы во время ввода сообщения. Вы не можете полностью остановить перезагрузку пользователя, но вы можете сделать так, чтобы это звучало очень страшно, если они это сделают.

№2 более или менее невозможно. Даже если вы отслеживали сеансы и логины пользователей, вы все равно не сможете гарантировать, что правильно обнаруживаете вторую вкладку. Например, я могу открыть одно окно, а потом закрыть его. Теперь открываю новое окно. Вы, вероятно, заметите это как вторую вкладку, хотя я уже закрыл первую. Теперь ваш пользователь не может получить доступ к первому окну, потому что он его закрыл, и он не может получить доступ ко второму окну, потому что вы им запрещаете.

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

168
ответ дан 24 November 2019 в 11:06
поделиться

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

Нарушение основных функций браузера никогда не является хорошей идеей, более 99,999999999% Интернета работает и обновляется с помощью F5, это ожидание пользователя, которое вы не должны нарушать.

33
ответ дан 24 November 2019 в 11:06
поделиться

Нет, никак.

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

Вам, вероятно, следует отступить от своего X (предотвращение обновления) и найти другое решение для Y (что бы это ни было).

6
ответ дан 24 November 2019 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: