2011-07-28 17 views
5

pracuję na tej stronie: „Lets Go” http://www.weloveflyers.co.uk/order.phponbeforeunload nie wydają się działać w Safari lub Chrome

Po ktoś wprowadził swoje dane zamówienie i kliknij informacje o zamówieniu są przechwytywane, wyświetlane, aby je sprawdzić, a następnie "Zapłać teraz!" przycisk pojawia się na dole (spróbuj, nic nie musisz płacić, żebyś wiedział co mam na myśli)

Nie chcę nikomu przeszkadzać w opuszczaniu strony PRZED kliknięciem przycisku Let's Go, ale jeśli już kliknęli "Let's Go!" (tj. złożył zamówienie), ale jeszcze NIE kliknął "Zapłać teraz!" Chcę się z nimi skontaktować "Czy naprawdę chcesz odejść? Jeśli opuścisz bez płacenia, Twoje zamówienie zostanie anulowane!"

Zanim przejdę do komplikacji polegającej na upewnieniu się, że działa tylko wtedy, gdy zamówienie zostało już złożone, spróbowałem tylko bardzo prostej instalacji onbeforeunload, aby sprawdzić, czy przeglądarka go obsługuje. Wydaje mi się, że sporadycznie obsługuję tę funkcję w Safari, zazwyczaj nie działa, ale bardzo rzadko, a w Chrome po prostu nie działa.

Każda pomoc lub porada, którą każdy może zaoferować, zostanie z wdzięcznością przyjęta!

Dzięki,

Phil

PS: Dla twojej informacji usunąłem na razie całą funkcjonalność onbeforeunload ze strony na żywo, ponieważ nie chcę denerwować użytkowników, dopóki nie zrobię tego dobrze i zrobi dokładnie to, co chcę.

UPDATE: Oto najnowsza próba:

var needToConfirm = true; 
window.onbeforeunload = confirmExit; 
function confirmExit() { 
    if (needToConfirm) 
    return "Message"; 
}; 
+0

Czy możesz opublikować kod, którego używasz do wiązania zdarzenia onbeforeunload? – rkaregaran

+0

Moja ostatnia próba użycia tego: \t \t 'kod' \t \t var needToConfirm = true; \t \t \t \t window.onbeforeunload = confirmExit; \t \t funkcja confirmExit() \t \t { \t \t if (needToConfirm) \t \t zwrot "Wiadomość"; \t \t}; \t \t \t \t '/ code' Podczas eksperymentowania, próbowałem ustawić needToConfirm na false, używając" Let's Go! " , aby ustawić go na True, a następnie za pomocą przycisku "Zapłać teraz", aby przywrócić go do Fałszywy, jako sposób uruchomienia go tylko w odpowiednim momencie. –

+0

Twoja najłatwiejsza próba działa dobrze dla mnie w Chrome. – serg

Odpowiedz

6

Jak na MDN documentation, po prostu próbowałem następujące w Chrome 11 (i 13) oraz Safari 5 na OS X, a w Chrome 14 na Windows 7, i to działa dobrze dla mnie (podobnie jak powyżej kodu!):

window.onbeforeunload = function (e) { 
    e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
    e.returnValue = 'Any string'; 
    } 

    // For Safari 
    return 'Any string'; 
}; 

Co się stanie, jeśli używasz powyższy kod na swojej stronie, dokładnie tak, jak to jest?

Z jakich wersji Chrome i Safari korzystasz?

+1

Tak, teraz działa! Dzięki! – Phuong

Powiązane problemy