Я хочу сделать подтверждение, прежде чем пользователь покинет страницу. Если он говорит «хорошо», он перенаправляет на новую страницу или отменяет, чтобы уйти. Я пытался сделать это с помощью onunload
<script type="text/javascript">
function con() {
var answer = confirm("do you want to check our other products")
if (answer){
alert("bye");
}
else{
window.location = "http://www.example.com";
}
}
</script>
</head>
<body onunload="con();">
<h1 style="text-align:center">main page</h1>
</body>
</html>
Но это подтверждают после того, как страница уже закрыта? Как это сделать правильно?
Было бы еще лучше, если бы кто-нибудь показал, как это сделать с помощью jQuery?
javascript
jquery
KD7
источник
источник
Ответы:
onunload
(илиonbeforeunload
) не может перенаправить пользователя на другую страницу. Это из соображений безопасности.Если вы хотите показать подсказку до того, как пользователь покинет страницу, используйте
onbeforeunload
:Или с помощью jQuery:
Это просто спросит пользователя, хочет ли он покинуть страницу или нет, вы не сможете перенаправить его, если он решит остаться на странице. Если они решат уйти, браузер пойдет туда, куда они сказали.
Вы можете использовать
onunload
что-то перед тем, как страница будет выгружена, но вы не можете перенаправить оттуда (Chrome 14+ блокирует оповещения внутриonunload
):Или с помощью jQuery:
источник
onbeforeunload
, браузер помещает эту строку в собственное окно подтверждения. Использованиеconfirm
бесполезно вonunload
иonbeforeunload
, потому что только браузер может контролировать, куда он идет, а не вы. Проверьте это демо: jsfiddle.net/3kvAConbeforeunload
,return false
заставит браузер показывать «false» в диалоговом окне. Это необходимо,return undefined
если вы хотите, чтобы окно закрылось без предупреждения пользователя.Этот код, когда вы также обнаруживаете изменение формы или нет.
Вы можете использовать функцию Google JQuery Form Serialize, которая соберет все входные данные формы и сохранит их в массиве. Я думаю, этого объяснения достаточно :)
источник
Это предупредит при выходе с текущей страницы
источник
Это то, что я сделал, чтобы показать подтверждающее сообщение только тогда, когда у меня есть несохраненные данные
возвращение "undefined" отключит подтверждение
Примечание: возвращение «ноль» не будет работать с IE
Также вы можете использовать «undefined», чтобы отключить подтверждение
источник
Для того, чтобы иметь popop с Chrome 14+, вам нужно сделать следующее:
Пользователю будет задан вопрос, хочет ли он остаться или уйти.
источник
jQuery(document)
и я предлагаю поставить это правильно после того, как все ваши плагины загружены. Кроме того, этот фрагмент не делает никаких предупреждений ... это всего лишь демонстрация сreturn
.Вы можете использовать следующую однострочную строку, чтобы всегда спрашивать пользователя перед тем, как покинуть страницу.
Чтобы спросить пользователя, когда что-то на странице было изменено, смотрите этот ответ .
источник
Обычно вы хотите показать это сообщение, когда пользователь внес изменения в форму, но они не сохранены.
Используйте этот подход, чтобы показать сообщение, только когда пользователь что-то изменил
источник
https://www.w3schools.com/tags/ev_onbeforeunload.asp
источник
Большинство решений здесь не работает для меня, поэтому я использовал найденное здесь
Я также добавил переменную, чтобы разрешить окно подтверждения или нет
источник
Еще немного полезнее, включи и отключи
источник