Предотвратить веб-страницы при переходе на JavaScript
Как предотвратить веб-страницы перейти на JavaScript?
116
9
Как предотвратить веб-страницы перейти на JavaScript?
С помощью метода onunload
позволяет только выводить сообщения, но это будет не прерывать судоходства (потому что это слишком поздно). Однако, вы можете использовать
onbeforeunload` и он будет прерывать навигации:Редактировать: удаление подтвердить () в оператор return, как это вызвано окно подтверждения, как ожидалось, но и показал второй подтвердить результат первого подтверждения.
В отличие от других методов, представленных здесь, этот кусок кода будет не браузер для отображения предупреждения, предлагающее пользователю, если он хочет уйти; вместо этого, он использует эвентед природа дом для перенаправления обратно к текущей странице (и, следовательно, отмена навигации) до того, как браузер имеет возможность выгрузить ее из памяти.
Поскольку он работает за счет короткого замыкания навигации напрямую, он не может быть использован для того чтобы предотвратить эту страницу из были закрыты; однако, он может быть использован для отключения рамки перебора.
Предупреждение: Вы никогда не должны делать этого. Если страница имеет рамку перебора кода на нем, пожалуйста, уважать пожелания автора.
Я закончил с этим немного другая версия:
В другом месте я поставил грязный флаг в true, когда форма получает загадили (или я иначе хочу допустить перехода). Это позволяет мне легко контролировать, если пользователь получает подтверждение навигационной строке.
С текстом выбранного ответа вы увидите дополнительные запросы:
В Айман'ы например, вернув значение false предотвратить вкладке окна браузера/закрытия.
Эквивалент в более современный и совместимый браузер, используя современные метода addEventListener Апис.
Источник: https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload
Эквивалентно принято отвечать в jQuery 1.11:
[JSFiddle пример](http://jsfiddle.net/485xsaao/)
altCognito'ы ответьте использовал
разгрузить
событие, которое происходит слишком поздно для JavaScript, чтобы прервать навигации.Применение метода onunload.
Для jQuery, я думаю, это работает так:
Что предложено, сообщение об ошибке может дублировать сообщение об ошибке в браузере уже отображается. В хром, в 2 похожих сообщения об ошибках отображаются одна после другой в том же окне.
В Chrome, текст, отображаемый после таможни сообщение: "и вы уверены, что хотите покинуть эту страницу?&и". В Firefox, он не отображает наше пользовательское сообщение об ошибке на всех (но по-прежнему отображается диалоговое окно).
Может быть более подходящее сообщение об ошибке:
Или стиль и StackOverflow: "Вы начали писать или редактировать пост.&и"
Если вы не поймать браузере кнопку Назад/Вперед и Дон'т хотите, чтобы уйти, вы можете использовать:
В противном случае, вы можете использовать [beforeunload](https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload событие), но сообщение может или не может работать кросс-браузер, и требует возвращения что-то, что заставляет встроенную подсказку.