Avatar billede bjering Nybegynder
07. november 2012 - 06:52 Der er 5 kommentarer og
1 løsning

Hvordan se om folk trykker cancel på en onbeforeunload funktion

Først, dette er koden jeg har lige nu:

<script>
    function getFlashMovie(movieName)
    {
        var isIE = navigator.appName.indexOf("Microsoft") != -1;
        return (isIE) ? window[movieName] : document[movieName];
    }
 
    window.onbeforeunload = function (evt)
    {
        if(getFlashMovie("myFlash").askBeforeQuit("closing"))
        {
                var message = 'Do you really want to leave?';
            if (typeof evt == 'undefined')
            {
                evt = window.event;
            }
            if (evt)
            {
                evt.returnValue = message;
            }
            return message;
        }
    } 
</script>

Den tjekker om vi vil forlade vores side.

Men, hvordan kan jeg se om en bruger klikker på cancel i dialog boksen eller ok og så udføre en kommando efter det ?

Har prøvet 1000 ting, man kan ikke få det til at virke :(
Avatar billede olebole Juniormester
07. november 2012 - 18:44 #1
<ole>

Når brugeren lukker sin browser, kan du foretage dig en handling på onbeforeonload. Den handling, har du så valgt, skal være pågældende boks. Når brugeren har svaret på boksen, har du brugt dit skud i bøssen - du kan ikke gøre mere.

Prøv dette i stedet for:

window.onbeforeunload = function(evt) {
    if (!confirm("Do you really want to leave?")) {
        // Do da stuff
    }
}

Det vil jeg tro, virker som ønsket  =)

/mvh
</bole>
Avatar billede bjering Nybegynder
08. november 2012 - 00:18 #2
Men den lukker stadig vinduet ved try på cancel, og skal den jo ikke.
Avatar billede olebole Juniormester
08. november 2012 - 01:01 #3
Nej, det er ikke let at gøre noget, når brugeren lukker vinduet. Chrome og Opera reagerer slet ikke på onbeforeunload - og resten reagerer forskelligt.

På den anden side slipper man for alle de båtnakker, der ellers ville sørge for, man aldrig kunne forlade deres site  *o)
Avatar billede bjering Nybegynder
08. november 2012 - 01:17 #4
Rigtigt :)

Men problemet er jeg har en flash fil der skal slettet nogle brugerdata fra mysql når man lukker for vinduet, men ikke hvis man canceler.

Har prøvet bare at udføre kommandoen direkte til flash når vinduet lukker, men den når ikke at udføre kommandoen.

det er en fullscreen flash (altså fylder hele browser vinduet).

Min tanke var jeg opretter min temp db tabel når de kommer ind.
Sletter når de prøvet at lukke
Genopretter tabellen hvis de bruger cancel knappen.

Derfor er det nødvendig at finde ud af om de lukker vinduet eller ej.
Avatar billede olebole Juniormester
08. november 2012 - 01:25 #5
Så er det nok nødvendigt at retænke løsningen
Avatar billede bjering Nybegynder
08. november 2012 - 06:01 #6
Okay, tror jeg vil lave det med en slags sidsteaktivitetstid i db og når den er over 1 dag gammel så skal den bare slettets (dvs man ikke har lavet noget i over en dag).

Men tak alligevel.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester