Chcę potwierdzić, zanim użytkownik opuści stronę. Jeśli powie „ok”, przekieruje na nową stronę lub anuluje opuszczenie strony. Próbowałem to zrobić przy nieobciążeniu
<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>
Ale to potwierdza po zamknięciu strony? Jak to zrobić poprawnie?
Byłoby jeszcze lepiej, gdyby ktoś pokazał, jak to zrobić za pomocą jQuery?
javascript
jquery
kd7
źródło
źródło
Odpowiedzi:
onunload
(lubonbeforeunload
) nie może przekierować użytkownika na inną stronę. Jest to ze względów bezpieczeństwa.Jeśli chcesz wyświetlić monit, zanim użytkownik opuści stronę, użyj
onbeforeunload
:Lub z jQuery:
To tylko zapyta użytkownika, czy chce opuścić stronę, czy nie, nie możesz przekierować go, jeśli zdecyduje się pozostać na stronie. Jeśli zdecydują się odejść, przeglądarka przejdzie tam, gdzie kazali.
Możesz użyć
onunload
do zrobienia rzeczy przed rozładowaniem strony, ale nie możesz przekierować stamtąd (Chrome 14+ blokuje alerty wewnątrzonunload
):Lub z jQuery:
źródło
onbeforeunload
, przeglądarka umieszcza go w swoim własnym polu potwierdzenia. Korzystanieconfirm
jest bezużyteczne w,onunload
aonbeforeunload
ponieważ tylko przeglądarka może kontrolować, dokąd idzie, a nie ty. Sprawdź to demo: jsfiddle.net/3kvAConbeforeunload
,return false
spowoduje, że przeglądarka pokaże „fałsz” w oknie dialogowym. Musisz,return undefined
jeśli chcesz, aby okno zamknęło się bez powiadomienia użytkownika.Ten kod, gdy wykryjesz również stan formularza zmieniony lub nie.
Możesz użyć funkcji Google Serialize formularza JQuery, która zbierze wszystkie dane wejściowe formularza i zapisze je w tablicy. Myślę, że to wyjaśnienie wystarczy :)
źródło
Powiadomi Cię o opuszczeniu bieżącej strony
źródło
To, co zrobiłem, aby wyświetlić komunikat potwierdzający właśnie wtedy, gdy mam niezapisane dane
powrót „niezdefiniowany” spowoduje wyłączenie potwierdzenia
Uwaga: zwracanie „null” nie będzie działać z IE
Możesz także użyć „niezdefiniowany”, aby wyłączyć potwierdzenie
źródło
Aby mieć popop z Chrome 14+, musisz wykonać następujące czynności:
Użytkownik zostanie zapytany, czy chce zostać czy odejść.
źródło
jQuery(document)
i sugeruję, aby umieścić go zaraz po załadowaniu wszystkich wtyczek. Ponadto ten fragment kodu nie ostrzega ... to tylko wersja demonstracyjnareturn
.Możesz użyć poniższej linijki, aby zawsze pytać użytkownika przed opuszczeniem strony.
Aby zapytać użytkownika, kiedy coś na stronie zostało zmodyfikowane, zapoznaj się z tą odpowiedzią .
źródło
Zwykle chcesz wyświetlić tę wiadomość, gdy użytkownik wprowadził zmiany w formularzu, ale nie są one zapisywane.
Zastosuj to podejście, aby wyświetlić komunikat tylko wtedy, gdy użytkownik coś zmienił
źródło
https://www.w3schools.com/tags/ev_onbeforeunload.asp
źródło
Tylko trochę bardziej pomocny, włącz i wyłącz
źródło
Większość rozwiązań tutaj nie działała dla mnie, więc skorzystałem z tego znalezionego tutaj
Dodałem również zmienną, aby zezwolić na pole potwierdzenia lub nie
źródło