Запрет обновления / перезагрузки страницы с помощью JavaScript - PullRequest
4 голосов
/ 24 октября 2011

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

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

Возможно ли это?Я обработал клавишу F5, но мне также нравится предотвращать обновление с кнопки.

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

ОБНОВЛЕНИЕ: я написал это 5 лет назад, браузеры теперь делают разные вещи, вы все еще можете использовать это для тестирования вашего браузера, но ваш опыт может отличаться от моего старого исследования.

Экспериментирую с использованием jQuery, потому что я ленивый.

Теоретически, предотвращение поведения по умолчанию должно мешать событию делать то, что оно должно делать. Он не работает с событиями в моем примере и имеет разные результаты в разных браузерах. Я вставил Math.random (), чтобы определить, была ли страница перезагружена или нет. Поскольку разные браузеры делают разные вещи, я настоятельно рекомендую НЕ использовать это в производственной среде.

<body>
<p></p>
<script type="text/javascript">
    $('p').append(Math.random());

    $(window).bind({
        beforeunload: function(ev) {
            ev.preventDefault();
        },
        unload: function(ev) {
            ev.preventDefault();
        }
    });
</script>
</body>

Использование CTRL-R или F5 или кнопки перезагрузки:

  • Safari: ничего не делает
  • Chrome: ничего не делает
  • Опера 10 и 11: ничего не делает
  • Firefox 7.x: показывает специальную подсказку с двумя кнопками:
    • Оставаться на странице - страница не перезагружается
    • Покинуть страницу - Перезагрузить страницу
  • IE7 и IE8: показывает подсказку с двумя кнопками:
    • OK - перезагрузка страницы
    • Отмена - не перезагружает страницу
  • IE9: показывает подсказку с двумя кнопками:
    • Покинуть эту страницу - перезагрузить
    • Оставайтесь на этой странице - не перезагружается

Приглашение Firefox (вы можете сказать, что я тестировал его на Mac)

Firefox Prompt

IE7 & IE8 Prompt

IE7 & IE8 Prompt

IE9 Prompt

IE9 Prompt

В заключение:

Да, я не тестировал IE6, я удалил свою виртуальную машину, на которой она была установлена, у меня нет виртуальной машины с установленной бета-версией IE10, поэтому вам тоже не повезло.

Вы также можете поэкспериментировать с cancelBubble и stopPropagation или, возможно, вернуть false; может раскрыть что-то полезное. Я не согласен с ответом Джордана о том, что вы не должны пытаться переопределить значения по умолчанию, поэтому я заканчиваю свой эксперимент здесь.

1 голос
/ 19 февраля 2013

Возвращение false в событии onsubmit предотвращает отправку формы и остается на той же странице без какого-либо взаимодействия с пользователем.

Например ..

когда форма с полем ввода пуста и отправила эту проверку javascript для проверки и возвращает соответственно. Если возвращается false, ничего не делается (т. Е. Страница не обновляется и не перенаправляется) ..

Если проверка в порядке и возвращено значение true, выполняется действие формы.

function validateForm(Str) {
mystring=document.getElementById('inputid').value; 
  if(!mystring.match(/\S/)){
    alert ('Please Enter a String.Field cannot be empty');
  return false;
  }else{
    return true;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...