Avatar billede gertnissen Nybegynder
03. september 1999 - 11:41 Der er 10 kommentarer og
1 løsning

Behold window øverst

Jeg åbner et vindue med window.open(), dette vindue ønsker jeg skal forblive i focus (øverst) indtil brugeren vælger knappen luk. Dvs. ved klik uden for vinduet (eks. i opener) skal det åbnede/aktive vindue forblive øverst.

Jeg har forsøgt mig med alwaysRaised, alwaysLowerd, z-index, onblur=focus(), men uden det rette held.

P.S. Løsningen skal virke til Netscape 4.04 til OS/2.
Avatar billede justincase Nybegynder
03. september 1999 - 11:45 #1
Du siger at onBlur="window.focus()" ikke virker ???

Prøv med en timerfunktion i det åbnede vindue.

Altså :

function stayOnTop () {
  window.focus();
  setTimeout("stayOnTop()",55);
}

Problemet kan bare være at det måske tager fokus væk fra eventuelle input fields.

:)

JustinCase
Avatar billede justincase Nybegynder
03. september 1999 - 11:53 #2
Jeg kan sagtens få onBlur="window.focus()" til at virke.
Kan det ikke tænkes at du har glemt at skrive window. ??
Og har du placeret den i <body> ??

:)

JustinCase
Avatar billede kan Nybegynder
06. september 1999 - 11:23 #3
Hej gertnissen
Du skal bare sætte dette ind i dit body tag, på den nye side du åbner:

<BODY onBlur="self.focus()">

/Kan
Avatar billede gertnissen Nybegynder
13. september 1999 - 21:03 #4
Jeres svar er ikke helt nok. Jeg ønsker ikke blot at beholde focus på det vindue der aktuelt ligger øverst, men at kunne styre når der åbnes et nyt child vindue eller brugeren vælger luk.

Se evt. mit eksempel som desværre ikke virker.

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function preview2() {
  p=window.open("","p","width=550,height=400")
  p.document.open()
  p.document.writeln('<BODY onFocus="opener.stayOnTop()">')
  p.document.writeln('<H1>Win 2</H1><HR>')
  p.document.writeln('<FORM><INPUT TYPE="button" ONCLICK="opener.preview3()" VALUE="Win 3"></FORM>')
  p.document.writeln('<BR><A Href="java script:window.close();">LUK</A>')
  p.document.writeln('</BODY>')
  p.document.close()
}

function preview3() {
  q=window.open("","q","width=550,height=400")
  q.document.open()
  q.document.writeln('<H1>Win 3</H1><HR>')
  q.document.writeln('<BR><A Href="java script:window.close();">LUK</A>')
  q.document.close()
}

function stayOnTop() {
  if (p.open && !q.open) {p.focus}
  if (q.open) {q.focus}
}   
</SCRIPT>
</HEAD>
<BODY onFocus="StayOnTop">
<H1>Win 1</H1><HR>
<FORM NAME="info">
<INPUT TYPE="button" ONCLICK="preview2()" VALUE="Win 2"><BR>
<INPUT TYPE="button" ONCLICK="preview3()" VALUE="Win 3"><BR><BR>
<INPUT TYPE="button" ONCLICK="p.close();q.close()" VALUE="Close Win2, Win 3"><BR>
</FORM>
</BODY>
</HTML>

Undskyld den lange tid, der er gået.

Jusincase > Korrekt dit foslag tager focus fra input felter, det dur desværre ikke i mit tilfælde.
Avatar billede mit Nybegynder
13. september 1999 - 23:15 #5
Jeg kan godt lave det så det virker, det du er ude efter...men, jeg ved ikke hvordan man håndterer, hvis en af dine "child-vinduer" bli'r lukket med det kryds, som sidder oppe i højre hjørne...(kan man undgå det??)
Avatar billede gertnissen Nybegynder
13. september 1999 - 23:27 #6
Umiddelbart kender jeg ikke nogen måde at undgå det på, men kan det ikke løses med noget onFocus, onBlur mellem alle vinduerne.

Dvs. hvis vindue 3 (child af 2) lukkes med krydet, og brugeren vælger at gå ind i vindue 1, så skal den automatisk vise vindue 2 (child af 1) da den nu er øverst i hierakiet. (sidst åbnet af dem der nu er åbnet). Hvis brugeren vælger at vise vindue 2 er der ingen problemer.

Brugeren må ikke kunne benytte vindue 1, når 2 og eller 3 er åben. Brugeren må ikke kunne benytte vindue 1 og 2 når 3 er åben.

mit > Jeg ser frem til din løsning
jusincase og kan > I er også meget velkomne med løsninger
Avatar billede mit Nybegynder
13. september 1999 - 23:38 #7
Tror jeg ikke...problemet er, at (så vidt jeg ved) man ikke kan lave eventhandling på BODY'en på de nye vinduer (man kan ikke lave et BODY-tag)
Jeg har rettet lidt i det du har lavet, så det virker fint nu, men for at undgå scriptfejl, er man nødt til at "overvåge" om et vindue er åben eller lukket. Her opstår problemet, hvis vinduet lukkes med krydset:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function preview2() {
  p=window.open("","p","width=550,height=400")
  p.document.open()
  p.document.writeln('<H1>Win 2</H1><HR>')
  p.document.writeln('<FORM><INPUT TYPE="button" ONCLICK="opener.preview3()" VALUE="Win 3"></FORM>')
  p.document.writeln('<BR><A Href="java script:opener.openedp=false; window.close();">LUK</A>')
  p.document.close()
  openedp=true;
}

function preview3() {
  q=window.open("","q","width=550,height=400")
  q.document.open()
  q.document.writeln('<H1>Win 3</H1><HR>')
  q.document.writeln('<BR><A Href="java script:opener.openedq=false; window.close();">LUK</A>')
  q.document.close()
  openedq=true;
}

function StayOnTop() {
  if (openedq) {q.focus()}
  else if (openedp){p.focus()}
  setTimeout ("StayOnTop()", 100);
}   
openedp=false;
openedq=false;
</SCRIPT>
</HEAD>
<BODY onFocus="StayOnTop()">
<H1>Win 1</H1><HR>
<FORM NAME="info">
<INPUT TYPE="button" ONCLICK="preview2()" VALUE="Win 2"><BR>
<INPUT TYPE="button" ONCLICK="preview3()" VALUE="Win 3"><BR><BR>
<INPUT TYPE="button" ONCLICK="p.close();q.close()" VALUE="Close Win2, Win 3"><BR>
</FORM>
</BODY>
</HTML>

Avatar billede mit Nybegynder
13. september 1999 - 23:40 #8
...der var vist et spørgsmål for nylig, hvor en bad om at kunne ignorere en scriptfejl...Det var måske en løsning...men ikke en pæn løsning...
Avatar billede gertnissen Nybegynder
14. september 1999 - 16:25 #9
Dine tilretninger virker efter hensigten, dog ikke mht. hvis brugeren vælger at lukke via krydset (alt-F4) som du selv nævner.

Kunne mit eller justincase forklare mig hvorfor i benytter setTimeout("stayOnTop()",55); i jeres løsningsforslag.

mit > Mht at ignorere scriptfejl var det så window.onerror=null der blev brugt ?

jusincase > du har jo egentlig også en aktie i løsningen af dette problem, opretter du et nyt svar - så du også kan få lidt credit.
Avatar billede mit Nybegynder
14. september 1999 - 18:15 #10
setTimeout("stayOnTop()",55)
Starter kalder funktionen stayOnTop() efter 55 tusindedele sekunder...altså bli'r funktionen bare kørt igen og igen og...
Jeg kan ikke huske det, men jeg tror du har ret i, at det var window.onerror=null, som blev brugt..
Avatar billede gertnissen Nybegynder
17. september 1999 - 23:16 #11
Værsko mit, igen har du svaret på et af mine spørgsmål. Det lader ikke til at jusincase vil have del i de 100 point, så du får dem alle samme.

Hvis du kommer i tanke om en forbedring af scriptet, så skriv endelig.

Tak for hjælpen
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