Avatar billede xcx Nybegynder
11. juli 2002 - 04:03 Der er 8 kommentarer og
1 løsning

er vinduet åben hvis så luk det

Jeg har lavet (eller stjålet eller hvad det hedder) side der sender en cookie ud, så en popup kun loader een gang pr browser session.

jeg vil så senere gerne kunne tjecke på om viduet stadig er åben. efter at siden er blevet reloadet flere gange.
Avatar billede =maddog= Nybegynder
11. juli 2002 - 04:46 #1
tre punkter:
1) sikr dig at vinduet har en global varibel ved at definere den øverst i dit script.
<script type="text/javascript">
var win;

2) åbn dit vindue konsekvent som et objekt med den ovenstående variabel
win = window.open([parametre]);

3) hvis vinduet er åbent er win defineret, hvis ikke er det undefined. det bruger vi som boolean i en if.
if (win) /*vinduet er åbent, gør det du vil gøre*/  else  /*vinduet er lukket*/
Avatar billede =maddog= Nybegynder
11. juli 2002 - 04:53 #2
ups. duer ikke. sorry. du kan kun tjekke om den er blevet åbnet. ikke om den er lukket af brugeren.
Avatar billede =maddog= Nybegynder
11. juli 2002 - 04:54 #3
det tror jeg faktisk ikke du har rettigheder til ved nærmere eftertanke.
Avatar billede ras2000 Nybegynder
11. juli 2002 - 10:46 #4
Der er en mulighed, men den er enormt uskøn. Du kan bruge din window.error handler til det. Denne kode tjekker om et vindue er åbent eller ej:
<HTML>
<head>
<script type="text/javascript">
window.onerror = lap;
function lap(url, message, line){
    alert("vinduet er lukket");
    return true;
}
function aabenvindue(){
    win = window.open("", "hejsa", "")
    parent.window.focus();
    setTimeout("andet()", 2000);
}
function andet(){
    win.window.focus();
    alert("vinduet er åbent");
}
</script>
</head>
<body onload="aabenvindue()">

</body>
</html>
Avatar billede ras2000 Nybegynder
11. juli 2002 - 10:51 #5
Den virker ved at den åbner et vindue, venter 2 sekunder, og så forsøger den at give det nye vindue focus. Hvis det lykkes, kommer den med beskeden vinduet er åbent. Hvis det ikke lykkes, kommer der en fejl i programmet, fordi den ikke kan give focus til noget der ikke eksisterer. Men der er en onerror handler, som fjerner denne fejl, og kommer med beskeden at vinduet er lukket i stedet. Hvis du skal bruge det, skal du nok føje nogle betingelser til, ellers vil den sige at vinduet er lukket hver gang der er fejl i dit script. Du kan f.eks tjekke på linien, i dette tilfælde linien win.window.focus(), linie 15.
Avatar billede =maddog= Nybegynder
11. juli 2002 - 14:41 #6
så burde det være nemmere med en try - catch uden at have prøvet
try { win.window.focus(); alert('åben'); }
catch (ex) { alert('lukket'); }
Avatar billede ras2000 Nybegynder
11. juli 2002 - 14:47 #7
Den kendte jeg ikke.
Avatar billede ras2000 Nybegynder
11. juli 2002 - 15:01 #8
... men den virker fint!
Avatar billede =maddog= Nybegynder
11. juli 2002 - 15:34 #9
jeg er fra det gamle java/NS4 land. der er den slags en nødvendighed, da man ikke havde adgang til alle de smarte event handlers.
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