Avatar billede mskjoldp Novice
23. februar 2007 - 21:00 Der er 12 kommentarer og
1 løsning

hvordan lukkes dr netradio

Hey E

jeg har et simpelt spg: hvad er koderne til http://netradio.dr.dk 's alert når siden lukkes?
Avatar billede crazysnap Seniormester
23. februar 2007 - 23:13 #1
Hej mskjoldp,


Det er bare noget javascript lignende det jeg har lavet nedenfor. :)


<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/JavaScript">
        window.onbeforeunload = confirmExit;
       
        function confirmExit()
        {
            return "Du er ved at navigere væk fra DR Netradio. Osv osv osv....";
        }
        </script>
    </head>
    <body>
        TEST
    </body>
</html>


Håber det var det du søgte! :)


Mvh.


- Snap
Avatar billede mskjoldp Novice
24. februar 2007 - 21:23 #2
yeps, det var det jeg søgte, men jeg skal lige have lidt hjælp til at integrere det i min kode ASP3.0 kode...

al kode går gennem default.asp via mode = bl.a. bl.a. osv.

fra bunden:
brugeren har en startside (default.asp?mode=)
trykker på ENTER via onClick="launchWin('default.asp?mode=login osv....
trykker LOGIN og sendes til default.asp?mode=visstatus

og her kommer så mit spg:
når brugeren er nået til default.asp?mode=visstatus og senere lukker dette vindue, vil jeg gerne have window.onbeforeunload = confirmExit; til at reagere...

jeg har kort prøvet med:
<body window.onbeforeunload="confirmExit();"> .... ASP kode .... </body>
men uden held...
Avatar billede mskjoldp Novice
24. februar 2007 - 21:28 #3
2. forsøg:

hvis jeg sætter

<script type="text/JavaScript">
window.onbeforeunload = confirmExit;
function confirmExit()
{
return "Du er ved at navigere væk fra DR Netradio. Osv osv osv....";
}
</script>

ind på siden default.asp?mode=visstatus reagere scriptet hver gang jeg trykker på et link... = ikke godt!!
Avatar billede crazysnap Seniormester
24. februar 2007 - 23:12 #4
Hej mskjoldp,

Jeg kan godt se dit problem. :) Jeg har ændret scriptet så det understøtter den handling du ønsker. Du skal blot specificere hvilken 'mode' det er scriptet skal aktiveres i (ved at sætte 'modeToShowWarning'-variablen i scriptet til den ønskede mode) samt sætte onclick="displayWarning=false;" på alle de links og knapper hvor du ikke ønsker at warning-beskeden skal poppe op.

En test side med scriptet kan ses nedenfor. Der skal først klikkes på den øverste knap så der tilføjes en querystring (mode=visstatus) på URL'en. Herefter kan du prøve de andre knapper og se at du fint kan navigere til andre sider nu uden warning beskeden, men prøver du at lukke for browseren popper warning-beskeden op. :)


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/JavaScript">
        var displayWarning = true;
        var modeToShowWarning = 'visstatus';
   
        window.onbeforeunload = confirmExit;
       
        function confirmExit()
        {
            var modeValue = getQueryVariable("mode");
         
            if(displayWarning && (modeValue == modeToShowWarning))               
                return "Du er ved at navigere væk fra DR Netradio. Osv osv osv....";
                         
            displayWarning = true;
        }
       
        function getQueryVariable(variable)
        {
            var query = window.location.search.substring(1);
            var vars = query.split("&");
            for (var i=0;i<vars.length;i++)
            {
                var pair = vars[i].split("=");
                if (pair[0] == variable)
                {
                    return pair[1];
                }
            }
           
            return "";
        }

        </script>
    </head>
    <body>
        <table>
            <tr>
                <td><input type="button" value="Redirect to same page containing a querystring mode=visstatus" onclick="window.location += '?mode=visstatus';" /></td>
            </tr>
            <tr>
                <td><input type="button" value="leave page without a warning" onclick="displayWarning=false; window.location = 'http://www.google.com';" /></td>
            </tr>
            <tr>
                <td><a href="http://www.google.com" onclick="displayWarning=false;">leave page without a warning</a></td>
            </tr>
            <tr>
                <td><input type="button" value="leave page with a warning" onclick="window.location = 'http://www.google.com'" /></td>
            </tr>
        </table>       
    </body>
</html>


Håber det var det du søgte! :)


Mvh.

- Snap
Avatar billede mskjoldp Novice
25. februar 2007 - 11:35 #5
ved du hvordan dr har lavet deres link? Det virker noget omfattende at skulle skrive onclick... på alle de links jeg bruger...
Avatar billede crazysnap Seniormester
25. februar 2007 - 13:44 #6
Hej mskjoldp,


Jeg har nu undersøgt javascriptet og html-scriptet for dr.dk's netradio client. De har ikke fundet på noget smartere, alle deres links (de bruger kun links) kalder en javascript metode hvorefter de returnerer 'false'.
Ved at returnere 'false' ved onclick event'en på links'ne ophæves 'default action' og linket bliver derfor ikke eksekveret (dvs. href bliver ikke kaldt og onbeforeunload event'en bliver heller ikke kaldt). Det betyder de skal skrive 'return false' ved alle deres onclick events på links'ne. :/

Det betyder samtidigt at de kun kan have links på deres side og ikke knapper, så det script jeg har foreslået giver dig mulighed for at have begge. :)

Jeg går lige i tænkeboks over en løsning hvor du ikke behøver at sætte displayWarning=false ved hver knap eller link, men indtil videre er det en ligeså god løsning som dr.dk har (og det du efterspurgte). :)


Mvh.

- Snap :)
Avatar billede mskjoldp Novice
25. februar 2007 - 13:51 #7
:) thx , jeg synes det ser lovende ud, men venter lige på resultatet af din tænkeboks :) og point har du fortjent!
Avatar billede crazysnap Seniormester
25. februar 2007 - 15:21 #8
Nå mskjoldp,


Nu er scriptet blevet forlænget. Jeg har tilføjet to metoder til scriptet som kan kaldes fra <body onload="" />:


1) disableWarningOnAll()

hvis du kalder denne (<body onload="disableWarningOnAll()" />) invokerer alle knapper (<input type="button" />) og alle links (<a href="" />) ikke warning-beskeden når der klikkes på dem.

2) disableWarningByName(strName)

Hvis du kalder denne (<body onload="disableWarningByName('link')" />) invokerer alle elementer på formen med name="link" ikke warning-beskeden når der klikkes på dem.


Så nu kan du selv vælge om nogen af dem skal invokere warning-beskeden eller om ingen skal. :)


Nedenfor er eksemplet hvor alle knapper og links sættes til ikke at invokere warning-beskeden:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/JavaScript">
        var displayWarning = true;
        var modeToShowWarning = 'visstatus';
   
        window.onbeforeunload = confirmExit;
       
        function confirmExit()
        {
            var modeValue = getQueryVariable("mode");
         
            if(displayWarning && (modeValue == modeToShowWarning))               
                return "Du er ved at navigere væk fra DR Netradio. Osv osv osv....";
                         
            displayWarning = true;
        }
       
        function disableWarningByName(strName)
        {           
            var links = document.getElementsByName(strName);

            for(var i = 0; i < links.length; i++)
                disableWarningOnElement(links[i]);
        }
       
        function disableWarningOnAll()
        {
            var input = document.documentElement.getElementsByTagName('input');
            var a = document.documentElement.getElementsByTagName('a');
           
            for(var i = 0; i < input.length; i++)
            {
                if(input[i].type == 'button');
                    disableWarningOnElement(input[i]); 
            }
               
            for(var i = 0; i < a.length; i++)
                disableWarningOnElement(a[i]);
        }
       
        function disableWarningOnElement(elm)
        {
            if(elm.onclick == null)
                elm.onclick = function() { displayWarning = false; };
            else
            {
                var clickEvt = elm.onclick.toString();
                var index = clickEvt.indexOf('{');
                   
                var subMethod = "displayWarning = false;" + clickEvt.substring(++index, clickEvt.length-1);
                elm.onclick = function() { eval(subMethod); };
            } 
        }
       
        function getQueryVariable(variable)
        {
            var query = window.location.search.substring(1);
            var vars = query.split("&");
            for (var i=0;i<vars.length;i++)
            {
                var pair = vars[i].split("=");
                if (pair[0] == variable)
                {
                    return pair[1];
                }
            }
           
            return "";
        }

        </script>
    </head>
    <body onload="disableWarningOnAll();">
        <table>
            <tr>
                <td><input type="button" value="Redirect to same page containing a querystring mode=visstatus" onclick="window.location += '?mode=visstatus';" /></td>
            </tr>
            <tr>
                <td><input type="button" name="link" value="leave page without a warning" onclick="window.location = 'http://www.google.com';" /></td>
            </tr>
            <tr>
                <td><a name="link" href="http://www.google.com">leave page without a warning</a></td>
            </tr>
            <tr>
                <td><input type="button" value="leave page with a warning" onclick="window.location = 'http://www.google.com'" /></td>
            </tr>
        </table>       
    </body>
</html>


Håber det er ved at være brugbart nu! :) Og mit svar ligger oppe i mit første indlæg! :)


Mvh.

- Snap
Avatar billede mskjoldp Novice
27. februar 2007 - 01:05 #9
hmmm, jeg synes at have lavt en kommentar i går, men den er ikke blevet gemt...

jeg har testet igen og mener at opleve at scriptet ikke virker på når man skal lukke vinduet. Dette er jo ellers mit oprindelige spg - msg ved luk af vindue/siden...

Snap tak for script hertil - du får points, men jeg mangler at msg reagere lige meget hvad scriptet siger, når vinduet lukkes...
Avatar billede mskjoldp Novice
27. februar 2007 - 01:09 #10
er det muligt at jeg har en gal opsætning? jeg kopier hele din script txt i en asp fil og køre den, og så har jeg ovenståend eoplevelse af at det ikke er hver gang jeg får msg ved luk af browservindue..
Avatar billede crazysnap Seniormester
27. februar 2007 - 01:49 #11
Det er korrekt, du får kun msg-boxen når mode=visstatus i din URL-streng. Dette kan dog meget nemt fjernes, synes bare at huske det kun var på den side msg-boxen skulle poppe op.. :)


- Snap
Avatar billede crazysnap Seniormester
27. februar 2007 - 12:48 #12
Hmm har testet scriptet igen, og det virker fint her (jeg kopierer det hele over i en html fil). Når jeg åbner siden trykker jeg på den første knap så URL'en får en QueryString der hedder mode=visstatus. Når dette er gjort kan jeg trykke på de to andre knapper eller linket hvorefter den fint redirect'er til en anden side uden msg-boxen. Prøver jeg derimod at lukke browseren dukker msg-boxen op.



For god ordens skyld har jeg nu fjernet 'mode=visstatus' fra scriptet så det nu virker for alle sider som kører scriptet. Så kan du jo selv vælge hvilken version af scriptet der passer til dit brug. :)


<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/JavaScript">
        var displayWarning = true;
   
        window.onbeforeunload = confirmExit;
       
        function confirmExit()
        {         
            if(displayWarning)               
                return "Du er ved at navigere væk fra DR Netradio. Osv osv osv....";
                         
            displayWarning = true;
        }
       
        function disableWarningByName(strName)
        {           
            var links = document.getElementsByName(strName);

            for(var i = 0; i < links.length; i++)
                disableWarningOnElement(links[i]);
        }
       
        function disableWarningOnAll()
        {
            var input = document.documentElement.getElementsByTagName('input');
            var a = document.documentElement.getElementsByTagName('a');
           
            for(var i = 0; i < input.length; i++)
            {
                if(input[i].type == 'button');
                    disableWarningOnElement(input[i]); 
            }
               
            for(var i = 0; i < a.length; i++)
                disableWarningOnElement(a[i]);
        }
       
        function disableWarningOnElement(elm)
        {
            if(elm.onclick == null)
                elm.onclick = function() { displayWarning = false; };
            else
            {
                var clickEvt = elm.onclick.toString();
                var index = clickEvt.indexOf('{');
                   
                var subMethod = "displayWarning = false;" + clickEvt.substring(++index, clickEvt.length-1);
                elm.onclick = function() { eval(subMethod); };
            } 
        }

        </script>
    </head>
    <body onload="disableWarningOnAll();">
        <table>
            <tr>
                <td><input type="button" name="link" value="leave page without a warning" onclick="window.location = 'http://www.google.com';" /></td>
            </tr>
            <tr>
                <td><a name="link" href="http://www.google.com">leave page without a warning</a></td>
            </tr>
            <tr>
                <td><input type="button" value="leave page without a warning" onclick="window.location = 'http://www.google.com'" /></td>
            </tr>
        </table>       
    </body>
</html>


Håber du kan se forskellen og at vi snart er nået til en løsning der kan bruges! :)


Mvh.

- Snap :)
Avatar billede mskjoldp Novice
27. februar 2007 - 22:54 #13
thx
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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