Jak zatrzymać wyładowanie strony (nawigowanie) w JS?

Czy ktoś wie, jak zatrzymać stronę przed ponownym załadowaniem lub nawigacją?

jQuery(function($) {

    /* global on unload notification */
    warning = true;

    if(warning) {
        $(window).bind("unload", function() { 
            if (confirm("Do you want to leave this page") == true) {
                //they pressed OK
                alert('ok');
            } else {
                // they pressed Cancel
                alert('cancel');
                return false;
            }
        });
    }
});

Obecnie pracuję nad witryną e-commerce, strona wyświetlająca przyszłe zamówienia ma możliwość zmiany ilości zamówionych przedmiotów za pomocą przycisków +/-. Zmiana ilości w ten sposób nie zmienia w rzeczywistości samego zamówienia, muszą one potwierdzić, a tym samym zatwierdzić pozytywne działanie w celu zmiany zamówienia.

Jeśli jednak zmienią wielkość i odejdą od strony, którą chciałbym ostrzec, robią to w przypadku, gdy jest to wypadek, ponieważ zmienione ilości zostaną utracone, jeśli odejdą lub odświeżą stronę.

W powyższym kodzie używam zmiennej globalnej, która domyślnie będzie fałszywa (tylko w przypadku testowania), kiedy zmieni się ilość, zaktualizuję tę zmienną, aby była prawdziwa, a gdy potwierdzą zmiany, ustawię ją na false .

Jeśli ostrzeżenie jest prawdziwe i strona jest rozładowana, oferuję im pole potwierdzenia, jeśli powiedzą, że nie chcieliby pozostać na tej stronie, muszę ją powstrzymać przed rozładowaniem. return false nie działa, nadal umożliwia użytkownikowi nawigację (alerty są dostępne tylko w celu debugowania)

Jakieś pomysły?

questionAnswers(6)

yourAnswerToTheQuestion