Avatar billede oxygen Nybegynder
25. september 2001 - 14:22 Der er 14 kommentarer og
1 løsning

Detect window-forladt og window-aktivt..

Jeg har nu fosøgt at skrive et lille script, der skal aktiveres når en bruger har \"forladt\" et Browservindue (fx ved åbning af popup-vindue) og efterfølgende vender tilbag til det.. En simpel ting vil jeg tro - bare ikke for mig!?

Jeg har både forsøgt med onBlur og UnFocus og onLoad og onUnload - og både i Body-tag\'en (hvor OnFokus ikke fungerer før man klikker indeni vinduet - at aktivere vinduet er ikke nok) og som et script i HEAD\'en (som altid bliver OnBlur - også selvom man stadig er i det pågældende vindue..)

Dette er hvor jeg er nu (men som ikke virker):
<head>
<SCRIPT LANGUAGE = \"JavaScript\">
    var sidenForladt = false;

    document.OnBlur = sidenForladt=true;\"
    document.onFocus = aktivFunktionen();
       
    function aktivFunktionen()
    {
        if ( sidenForladt == true ) { 
            document.write(\'Velkommen tilbage på siden!\');
        }
    }

   
</SCRIPT>   

</HEAD>
Avatar billede oxygen Nybegynder
25. september 2001 - 14:23 #1
(Ignorer blot gåseøjnene (\") efter true; - de er blevet slettet.)
Avatar billede olebole Juniormester
25. september 2001 - 14:26 #2
<ole>

Hov...Pas lige på! Du kan ikke skrive en alm. function, men en metode på dine handlers:

document.onfocus = aktivFunctionen;

...altså uden \'()\'.

/mvh
</bole>
Avatar billede olebole Juniormester
25. september 2001 - 14:30 #3
...eventuelt:

function doIt() {
  sidenForladt=true;
}

document.onblur= new Function(doIt);

...og husk så lige, at JavaScript er case-sensitivt....ikke stort \'O\' i \'onblur\'  :)
Avatar billede oxygen Nybegynder
25. september 2001 - 14:41 #4
Det kunne så se således ud samlet set:

<head>
<SCRIPT LANGUAGE = \"JavaScript\">
    var sidenForladt = false;

    document.onBlur = new Function(farveller);
    document.onFocus = new Function(aktivFunktionen);
       
    function farveller()
    {
    sidenForladt=true;
    document.write(\'Siden blev forladt - byebye<br>\');
    }

    function aktivFunktionen()
    {
        if ( sidenForladt == true ) { 
            document.write(\'Siden aktiv!<br>\');
        }
    }

   
</SCRIPT>   

</HEAD>
<body>
Dette er en test!<br>
</body>
</html>

- men der er ingen forskel p.t. - det virker ikke!
Avatar billede oxygen Nybegynder
25. september 2001 - 14:41 #5
(heller ikke MED <html> øverst...)
Avatar billede oxygen Nybegynder
25. september 2001 - 14:44 #6
(og ej heller med lille bogstaver ==> onblur & onfocus)
Avatar billede oxygen Nybegynder
25. september 2001 - 15:01 #7
Jeg hæver med en smule point da det åbenbart ikke er HELT simpelt..
Avatar billede oxygen Nybegynder
25. september 2001 - 15:03 #8
Når jeg siger det ikke virker mener jeg, at document.write sætningerne ikke skrives ud..
Avatar billede jakoba Nybegynder
25. september 2001 - 15:22 #9
det er også lidt meget at gøre ud af det.
prøv med:

<head>
<SCRIPT LANGUAGE = \"JavaScript\">

    var sidenForladt = false;
     
    function farveller()
    {
    sidenForladt=true;
    document.write(\'Siden blev forladt - byebye<br>\');
    }

    function aktivFunktionen()
    {
        if ( sidenForladt == true ) {
            document.write(\'Siden aktiv!<br>\');
        }
        sidenForladt = false;
    }
    document.onBlur = farveller;  // skal stå efter farveller er defineret.
    document.onFocus = aktivFunktionen;

 
</SCRIPT> 

</HEAD>
<body>
Dette er en test!<br>
</body>
</html>

mvh JakobA
Avatar billede jakoba Nybegynder
25. september 2001 - 15:26 #10
men hov.  onBlur og onFocus er da handlere for winduet. ikke dokumentet:

    window.onBlur = farveller;  // skal stå efter farveller er defineret.
    window.onFocus = aktivFunktionen;
Avatar billede oxygen Nybegynder
25. september 2001 - 15:33 #11
Selvom det samlet så ser således ud fungerer det stadig ikke - intet bliver skrevet hverken når browservinduet forlades eller igen markeres...?

<html>
<head>
<SCRIPT LANGUAGE = \"JavaScript\">

    var sidenForladt = false;
     
    function farveller()
    {
    sidenForladt=true;
    document.write(\'Siden blev forladt - byebye<br>\');
    }

    function aktivFunktionen()
    {
        if ( sidenForladt == true ) {
            document.write(\'Siden aktiv!<br>\');
        }
        sidenForladt = false;
    }
    window.onBlur = farveller;  // skal stå efter farveller er defineret.
    window.onFocus = aktivFunktionen;

 
</SCRIPT> 

</HEAD>
<body>
Dette er en test!<br>
</body>
</html>
Avatar billede roenving Novice
25. september 2001 - 16:02 #12
Hvad med at skrive en
document.close()
efter dine document.write

hth
jes
Avatar billede oxygen Nybegynder
25. september 2001 - 16:09 #13
Tilføjelse af document.close(); ændrer desværre ikke på noget - de bliver stadig ikke skrevet ud = det virker stadig ikke!
Avatar billede jakoba Nybegynder
25. september 2001 - 16:22 #14
jeg får forladt meldingen.
Og det er jo også alt hvad der kan fås. da document.write overskriver den eksisterende side.

testede lige, det viser sig at onfocus og onblur skal staves med lille:

<html>
<head>
<!-- Minus AutoDato -->
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">

<SCRIPT LANGUAGE = \"JavaScript\">

var sidenForladt = false;
   
function farveller() {
    sidenForladt=true;
    document.fr.tx.value += \"Siden blev forladt - byebye\\n\";
}

function aktivFunktionen() {
    if ( sidenForladt == true ) {
        document.fr.tx.value += \"Siden aktiv!\\n\";
    }
    sidenForladt = false;
}
window.onblur = farveller;  // skal stå efter farveller er defineret.
window.onfocus = aktivFunktionen;

</SCRIPT>

</HEAD>
<body>
Dette er en test!<br>
<form name=\'fr\'>
<textarea name=\'tx\' rows=6 cols=60 wrap=\'logical\'> </textarea>
</form>
</body>
</html>

mvh JakobA
Avatar billede oxygen Nybegynder
25. september 2001 - 17:22 #15
NU virker det - mange tak for det!
:-)


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