Обновление В последнем комментарии утверждается, что это не работает в новом Chrome ... Как показано в jsFiddle и проверено на моем личном сайте, этот метод все еще работает с Chrome ver 26.0.1410.64 m
Это действительно просто в jQuery:
jsFiddle
// slight update to account for browsers not supporting e.which
function disableF5(e) { if ((e.which || e.keyCode) == 116) e.preventDefault(); };
// To disable f5
/* jQuery < 1.7 */
$(document).bind("keydown", disableF5);
/* OR jQuery >= 1.7 */
$(document).on("keydown", disableF5);
// To re-enable f5
/* jQuery < 1.7 */
$(document).unbind("keydown", disableF5);
/* OR jQuery >= 1.7 */
$(document).off("keydown", disableF5);
На примечании стороны:
Это только отключает кнопку f5 на клавиатуре.
Чтобы действительно отключить обновление, вы должны использовать серверный скрипт для проверки изменений состояния страницы.
Не могу сказать, что действительно знаю, как это сделать, потому что я этого еще не сделал.
На сайте программного обеспечения, на котором я работаю, мы используем мою функцию disableF5 в сочетании с данными сеанса Codeigniter. Например, есть кнопка блокировки, которая блокирует экран и запрашивает диалоговое окно ввода пароля. Функция «disableF5» - быстрая и простая, и она не позволяет этой кнопке ничего делать. Однако, чтобы предотвратить щелчок мышью на кнопке обновления, необходимо выполнить несколько действий.
- Когда нажата блокировка, данные сеанса пользователя имеют переменную с именем «locked», которая становится TRUE
- Когда нажата кнопка обновления, в методе загрузки главной страницы выполняется проверка данных сеанса на «заблокированные», если TRUE, то мы просто не разрешаем перенаправление, и страница никогда не изменяется, независимо от запрошенного места назначения
СОВЕТ: Попробуйте использовать файл cookie, установленный на сервере, например, PHP $_SESSION
или даже .Net Response.Cookies
, чтобы указать, «где» находится ваш клиент в вашем сайт. Это более Vanilla способ сделать то, что я делаю с классом CI Session. Большая разница в том, что CI использует Table в вашей БД, тогда как эти vanilla методы хранят редактируемые cookie в клиенте. Недостатком является то, что пользователь может очистить свои куки.