Avatar billede zeusdk Nybegynder
17. februar 2003 - 11:36 Der er 10 kommentarer og
1 løsning

<body onFocusOut="self.close();">

Hej

Jeg har et popup-vindue, hvor jeg har prøvet følgende:
<body onBlur="self.close();">
Og
<body onFocusOut="self.close();">

Meningen var, at popup-vinduet skulle lukke sig selv, hvis brugeren klikkede uden for det (altså hvis brugeren klikkede på det bagvedliggende vindue, som skabte popup-vinduet). Men problemet er, at hvis man klikker på teksten, et billede eller andet i popup-vinduet, så bliver det også lukket, og det var ikke meningen. Det skulle nemlig kun lukke sig selv, hvis brugeren som sagt klikkede uden for popup-vinduet.

Hjælp :-)
Avatar billede Slettet bruger
17. februar 2003 - 15:02 #1
I hvilke browsere skal det virke?
Avatar billede zeusdk Nybegynder
17. februar 2003 - 18:12 #2
alle helst - i hvert fald IE og netscape
Avatar billede mortrr Praktikant
18. februar 2003 - 08:02 #3
onblur er den rette event, men du er nødt til at afbryde den hvis der klikkes i vinduet.

Den er lidt bøvlet, men nedenstående virker vist.
<script>
var allowClose=true;
function clickBody() {
  allowClose=false;
}
function tryClose() {
  if (allowClose) {
    window.close();
  }
}
function closeWindow() {
  allowClose=true;
  window.setTimeout("tryClose()",1000);
}

function resetClose() {
  allowClose=false;
}
</script>
<body onblur="closeWindow()" onclick="clickBody()" onfocus="resetClose()">
Avatar billede zeusdk Nybegynder
18. februar 2003 - 10:05 #4
Det er kun ca. halvdelen af gangene, hvor den mister fokuset, at den lukker sig selv ned. Kan dette ikke udbygges lidt - ellers ser det ud til at virke meget godt :-)
Avatar billede mortrr Praktikant
18. februar 2003 - 12:24 #5
Hmm - jeg får den kun selv til at "fejle" hvis jeg klikker forholdsvis hurtigt frem og tilbage, så det ene sekund ikke er gået.

Muligvis med:
<script>
var allowClose=true;
var toClose=false;
function clickBody() {
  allowClose=false;
  if (toClose) {
    window.clearTimeout(toClose);
    toClose=false;
  }
}
function tryClose() {
  if (allowClose) {
    window.close();
  }
}
function closeWindow() {
  allowClose=true;
  toClose=window.setTimeout("tryClose()",1000);
}

function resetClose() {
  allowClose=false;
  if (toClose) {
    window.clearTimeout(toClose);
    toClose=false;
  }
}
</script>
<body onblur="closeWindow()" onclick="clickBody()" onfocus="resetClose()">
Avatar billede zeusdk Nybegynder
18. februar 2003 - 12:37 #6
Jeg kan ikke få det til at funke. Hvis jeg klikker uden for popup-vinduet, så er der 50% chance for at den lukker sig selv. Hvis ikke den lukker sig selv, og jeg finder vinduet på bundlininen og klikker på det, så lukkes det.
Avatar billede mortrr Praktikant
18. februar 2003 - 12:50 #7
Hmm - så må jeg hellere selv prøve det i praksis.
Kigger på det i aften.

- Morten
Avatar billede zeusdk Nybegynder
18. februar 2003 - 21:06 #8
Jeg venter spændt :-)
Avatar billede mortrr Praktikant
18. februar 2003 - 22:34 #9
Jeg prøvede med følgende
<HTML>
<script>
var allowClose=true;
var toClose=false;
function clickBody() {
  allowClose=false;
  if (toClose) {
    window.clearTimeout(toClose);
    toClose=false;
  }
}
function tryClose() {
  if (allowClose) {
    window.close();
  }
}
function closeWindow() {
  allowClose=true;
  toClose=window.setTimeout("tryClose()",500);
}

function resetClose() {
  allowClose=false;
  if (toClose) {
    window.clearTimeout(toClose);
    toClose=false;
  }
}
</script>
<body onblur="closeWindow()" onclick="clickBody()" onfocus="resetClose()">
<p>Lidt tekst, og andet</p>
<input type="text" onblur="closeWindow()">
</BODY>
</HTML>

Da jeg kom i tanke om at onblur jo ikke "bubbler" op til body fra en input.
Så man er nødt til at have onblur på alle input og lign.
Almindelige tags er ligegyldige, da de ikke kan modtage fokus.

Men ellers kan jeg altså ikke få den til at fejle.
Den lukker smukt.
Jeg satte ventetiden ned til et halvt sekund, så den forsvinder lidt hurtigere.

- Morten
Avatar billede zeusdk Nybegynder
19. februar 2003 - 16:40 #10
Smukt, smukt, smukt... tryk svar :-)
Avatar billede mortrr Praktikant
19. februar 2003 - 21:27 #11
Nå ja. Tak

- Morten
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