Avatar billede Slettet bruger
18. marts 2001 - 01:01 Der er 11 kommentarer og
1 løsning

Lukke et popupvindue (igen igen)

Davs! Jeg har et popupvindue som virker helt uden problemer, pånær at jeg har en form i popupvinduet med en submitbutton i. Hvis man trykker på den submitbutton, går popupvinduet videre til en anden side, hvor der bliver udført nogle handlinger med de ting man har indtastet i popupvinduet. Hvordan kan jeg få popupvinduet til at lukke sig selv, når disse handlinger er blevet udført? Scriptet er i PHP...

- Tue Abrahamsen
Avatar billede hansen2000 Nybegynder
18. marts 2001 - 01:06 #1
er det java eller php?
Avatar billede hoejrup Nybegynder
18. marts 2001 - 01:07 #2
<script>
function lukwind()
{
opener.location.reload()
self.close()
}

setTimeout(\"close()\", 3000);
</script>


/per
Avatar billede Slettet bruger
18. marts 2001 - 01:15 #3
eeh... ok per, det kan sagtens være at dit svar virker, men nu fatter jeg ingenting af javascript, så hvis someone venligst gidder at skrive i dette script sådan at popupvinduet lukker af sig selv:

------index.php----
...
<script language=\"JavaScript\">
<!-- Gem koden for gamle browsere

function PopWin(url,h,w) { var ww = 480, wh = 340, leftPos = null, topPos = null;

if (top.screen){
  if (screen.width){
    leftPos = Math.round((screen.width-h-10)/2);
    topPos = Math.round((screen.height-w-29)/2);
  } else {    leftPos = 50
    topPos = 50
  }
}

popupWin = window.open(url, \'popup\', \'height=\' + h + \',width=\' + w + \',top=\' + topPos + \',left=\' + leftPos + \'\')
}
// -->
</script>
...
a href=\"java script:PopWin(\'newsadmin.php\',400,500);\">Admin</a>
...


--------popup.php------
...
<form method=\"POST\" action=\"index.php?id=1\">
  <textarea rows=\"19\" name=\"S1\" cols=\"54\"><? include(\"news.inc\") ?></textarea></p>
  <p><input type=\"submit\" value=\"Submit\" name=\"B1\"></p>
</form>
...
Avatar billede jakoba Nybegynder
18. marts 2001 - 03:47 #4
altså din hovedside bruger funktionen PopWin(...) til at åbne viduet
popupWin.
I popupWin ligger en form der udfyldes og submittes med en action-url \"index.php?id=1\".

Det er nok i filen  \"index.php\"  lukkemekanikken skal placeres. Hvis vi placerer den i det script du har postet har vi ingen mulighed for at checke on der handlinger der skal udføres nu også er blevet udført før vi lukker vinduet.

Hvis det er nok at siden har loadet kan du placere lukkeren i <body i index.php filen:

<body ... onload=\"self.close()\">

du kan evt forsinke det lidt for at lade evt lavascript-efterbehandling køre færdig.

<body ... onload=\"setTimeout(\'self.close()\',200)\">

200 giver 0,2 sekunders forsinkelse det skulle være rigeligt eftersom den store tid-usikkerhed er hvor lang tid det tager at hente siden fra din server.

Eller har jeg misforstået problemet? Jeg kan ikke rigtig se logikken.

mvh JakobA
Avatar billede Slettet bruger
18. marts 2001 - 03:58 #5
Efter at have testet dit svar, kom jeg frem til at scriptet så prøver at lukke vinduet med index.php, og det er jo ikke det vindue som skal lukkes... :( nederen...

- Tue Abrahamsen
Avatar billede jakoba Nybegynder
18. marts 2001 - 04:46 #6
Ja så fatter jeg slet ingen ting. ku du evt prøve af forklare hvilket vinduer der skal lukket og hvile dele af dine kodestumper der ligger på hvilke sider i hvilke winduer.
Avatar billede Slettet bruger
18. marts 2001 - 05:14 #7
Der står rimelig klart og tydeligt ovenover, at der er to filer, index.php og popup.php. popup.php er (spøjst nok) den side der kommer i en popup. Dette sker ved brug af koden som står under ---------index.php---------, og koden til popup.php står underligt nok under -------popup.php---------... På popup.php er der form, som det fremstår af koden ovenover, og i denne form er der en knap. Når man trykker på denne knap, bliver man sendt tilbage til index.php med en variabel. Det jeg gerne vil have lavet, er sådan at knappen _også_ lukker popup-vinduet, altså det vindue hvor popup.php er i. Er det tydeligt nok nu, eller skal jeg filme det og sende det til dig? :) No offense...

- Tue Abrahamsen
Avatar billede jakoba Nybegynder
18. marts 2001 - 05:31 #8
Det er rimeligt tydeligt nu. Tak. En god del af forvirringen kommer nok af at den form der står såvidt jeg kan se uvægerligt vil åbne filen  index.php  i det samme vindue som formen ligger i.

<form method=\"POST\" action=\"index.php?id=1\">
  <textarea rows=\"19\" name=\"S1\" cols=\"54\"><? include(\"news.inc\") ?></textarea></p>
  <p><input type=\"submit\" value=\"Submit\" name=\"B1\"></p>
</form>

Allenfals, nu er det rimeligt nemt: Sæt en onsubmit event i <form taggen der lukker vinduet:

<form method=\"POST\" action=\"index.php?id=1\"
      onsubmit=\"setTimeout(\'self.close\',200);return true\">
<textarea rows=\"19\" name=\"S1\" cols=\"54\"><? include(\"news.inc\") ?></textarea></p>
<p><input type=\"submit\" value=\"Submit\" name=\"B1\"></p>
</form>

Når der klikkes har siden 200 ms til at submitte formen før vinduet lukker.

mvh JakobA
Avatar billede Slettet bruger
18. marts 2001 - 05:35 #9
hmm... nu lukker den egentlig ikke, men det fixer jeg lige lidt med... :( anyway, du får dine poeng som tak... :)

- Tue Abrahamsen
Avatar billede jakoba Nybegynder
18. marts 2001 - 05:38 #10
Ups. jeg glemte  ()  efter self.close.
      onsubmit=\"setTimeout(\'self.close()\',200);return true\">

takker
mvh JakobA
Avatar billede Slettet bruger
18. marts 2001 - 05:40 #11
Takker! :)

- Tue Abrahamsen
Avatar billede olebole Juniormester
18. marts 2001 - 12:00 #12
<ole>
Hvis det er nogle php-handlinger, der skal udføres, er det vel mere sikkert at skrive:
    echo \"<script language=\'JavaScript\'>self.close();</script>\";
...lige efter disse handlinger er udført.
Hvis det er JavaScript-handlinger, der først skal udføres, kan du i slutningen af handlingsforløbet...altså i slutningen af den sidste funktion, der afvikles, skrive:
    self.close();
Så er der ikke problemer med om handlingerne kan nå at blive afviklet, inden der lukkes.
/mvh
</bole>
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