Avatar billede blackscorpion Nybegynder
05. marts 2005 - 18:42 Der er 38 kommentarer og
2 løsninger

opdatering af hovedside + lukning af popup vindue.

Hej Eksperter.

Sidder og roder med noget gæstebog, hvor der popper et nyt vindue op når man skal indlægge en besked.

problemet er så at få den til at lukke vinduet sammen med at opdatere hovedsiden.

Nogle ideer eller løsninger?
Avatar billede Slater Ekspert
05. marts 2005 - 18:49 #1
og:

window.parent.location.reload();
window.close();

virker ikke?
Avatar billede Slater Ekspert
05. marts 2005 - 18:49 #2
hov vent, det skulle selvfølgelig have været en window.opener
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 18:54 #3
jeg har nada forstand på javascript, det er så sindssygt lidt jeg har rodet med det, så det er til at grine over. :(
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 18:56 #4
lad os sige hovedsiden hedder main, og det er den side som smider en popup efter brugeren.

når brugeren har indtastet sin besked, og trykker på Skriv, så opdatere den hovedsiden, lukker popup'en ned, og hopper til beskeden.

håber du forstår.
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 18:57 #5
har før lavet chatte hvor jeg har brugt <base target="main"> men ved ikke om det virker når det er en popup?
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:22 #6
opener.window.location.reload(true); window.close();
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:26 #7
Man kunne lave det sådan her..

main checker om popup eksister
- hvis popup eksisterer, luk popup

og i popup:

<form action="update.php" target="opener">
...
</form>
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 19:30 #8
nu røg jeg af.

når man trykker på Skriv besked på hovedsiden, så lukker den en popup, hvor du så kan skrive din besked, når du så trykker send, så smider den informationerne ned til hovedsiden, hvor noget php så behandler det, så lukker popup'en, og phpscriptet på hovedsiden, smider så brugeren over til vedkomnes besked.

i korte træk.

hvordan smider jeg informationerne fra popup vinduet ned til hovedvinduet, og lukker popup vinduet ned. ??
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:36 #9
En anden metode:

** main:

<form action="opdater.php" navn="FORMSNAVN" method="post" style="display:inline">
<input type="hidden" name="navn">
<input type="hidden" name="besked">
</form>


** popup:

ved klik på "Skriv" aktiveres en onclick.. f.eks.:

<form onsubmit="return senddata(this); return false;">
Navn: <input type="text" name="navn">
<br>
Besked: <input type="text" name="besked">
<br>
<input type="submit" value="Skriv">
</form>

<script type="text/JavaScript">
function senddata(t)
{
f = opener.window.document.FORMENSNAVN;

f.navn.value = t.navn.value;
f.besked.value = t.besked.value;
f.submit();
window.close;
}
</script>
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:37 #10
Der skulle selfølgelig stå "name" i stedet for "navn":

<form action="opdater.php" name="FORMSNAVN" method="post" style="display:inline">
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 19:39 #11
så vidt jeg kan se, så sender den bare informationerne fra popup'en ned i en form på hovedsiden??
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:39 #12
Man kunne også lave selve "tjekket->luk popup" via siden der opdater.. men så skal man vente på at koden afvikles.. ser ikke særligt pænt ud..
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:40 #13
Ja, og den submitter også hovedsidens skjulte form.. denne linie submitter: f.submit();
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:41 #14
Ved klik på Skriv (eller et tryk på Enter-tasten) i popup'en, sker der:
1) informationerne sendes til den skjulte form, på hovedsiden
2) den skjulte form på hovedsiden submittes
3) popup'en lukker sig selv
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 19:42 #15
nice må jeg lige prøve. :D

vender tilbage om.. 15 mins, skal lige bikse det hele sammen. *G*
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 19:53 #16
Der sker ikke en skid...

index.php:

###################
<html>
<head>
  <script> 
  function NewWin () {
    win=window.open('popup.htm','_blank','width=500,height=300,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no')
  }
  </script>
</head>
<body>

<a href="#" OnClick="java script:NewWin()">Skriv!</a>

<form action="opdater.php" navn="FORMSNAVN" method="post" style="display:inline">
<input type="hidden" name="navn">
<input type="hidden" name="besked">
</form>

</body>
</html>
######################

popup.htm
######################
<html>
<head>
  <script type="text/JavaScript">
  function senddata(t)
  {
  f = opener.window.document.FORMENSNAVN;

  f.navn.value = t.navn.value;
  f.besked.value = t.besked.value;
  f.submit();
  window.close;
  }
  </script>
</head>
<body>

<form onsubmit="return senddata(this); return false;">
Navn: <input type="text" name="navn">
<br>
Besked: <input type="text" name="besked">
<br>
<input type="submit" value="Skriv">
</form>

</body>
</html>
####################

Opdater.php
####################
<?php

echo "Navn: " . $_POST['navn'] . "<br />";
echo "Besked: " . $_POST['besked'] . "<br />";

?>
######################


noget der er sat forkert op??
Avatar billede thesurfer Nybegynder
05. marts 2005 - 19:54 #17
hehehe.. jeg fandt også ud af, at der var fejl.. :-)
havde ikke testet det, men kigger lige på det :-)
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 19:55 #18
*LOL*

Takker. :D
Avatar billede thesurfer Nybegynder
05. marts 2005 - 20:16 #19
Jeg bliver lige nød til at smutte.. kigger på det, når jeg vender tilbage.. bliver nok engang i aften..
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 20:17 #20
bare i orden. :D
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 20:18 #21
okey det var IKKE filrettighederne. *LOL* :D
Avatar billede blackscorpion Nybegynder
05. marts 2005 - 20:20 #22
hov, *G* forkert indlæg. *LOL* :D
Avatar billede blackscorpion Nybegynder
06. marts 2005 - 07:04 #23
har løst det med dette:

<form action="opdater.php" method="POST" target="FORMSNAVN" onsubmit="java script:return senddata(this); return false">
Navn: <input type="text" name="navn">
<br>
Besked: <input type="text" name="besked">
<br>
<input type="submit" value="Skriv" OnClick="window.close()">
</form>

har smidt "action="opdater.php" method="POST" target="FORMSNAVN" " ind i formen, og smidt en Onclick="window.close()" på submit knappen.

men jeg ved ikke hvor holdbart det er, da jeg ikke ved om den lukker vinduet idet den submitter dataerne, eller om den submitter dataerne og så lukker vinduet...
Avatar billede blackscorpion Nybegynder
06. marts 2005 - 07:11 #24
okey der var lidt mere til det end det jeg skrev. *G*

på hovedesiden har jeg tilføjet:

<script ...>
self.name = "FORMSNAVN";
</script>

og så har jeg fjernet:

<form action="opdater.php" navn="FORMSNAVN" method="post" style="display:inline">
<input type="hidden" name="navn">
<input type="hidden" name="besked">
</form>


og det virker nu, men stadig samme problemstilling som før... hvad loader først og er det holdbart.
Avatar billede blackscorpion Nybegynder
06. marts 2005 - 07:12 #25
men det virker dog ikke i firefox. :(
Avatar billede thesurfer Nybegynder
06. marts 2005 - 17:19 #26
onclick-metoden er ikke god, idet den kræver at brugeren *klikker* på Skriv-knappen, og ikke bare *trykker* enter, ved et af felterne.

Jeg kan ikke se hvad der er galt.. hvis man vil ha' den til at udføre en funktion, der bruger data fra opener, virker det ikke.. men hvis jeg f.eks. indsætter alert('test') i funktionen (uden opener-koden) virker det fint..

Jeg har lige sendt en mail til roenving.. det kan være at han har en løsning..
Avatar billede blackscorpion Nybegynder
06. marts 2005 - 17:27 #27
okey, for jeg har prøver jeg VED ikke hvor mange "lukninger" byttet rundt på det hele.. sad omkring 3 timer i morges og surfede rundt på nettet efter en løsning.. og intet virker. :(
Avatar billede roenving Novice
07. marts 2005 - 12:05 #28
>>blackscorpion 06/03-2005 07:04:48 vil lukke vinduet før submit, en rimelig løsning vil være:

<form action="opdater.php" method="POST" onsubmit="setTimeout('opener.location.reload(true);self.close()',150);">
Navn: <input type="text" name="navn">
<br>
Besked: <input type="text" name="besked">
<br>
<input type="submit" value="Skriv">
</form>

-- så skal din opdater.php i princippet overhovedet ikke returnere noget ...

-- en helt anden form for løsning, kan f.eks. være:

<form action="opdater.php" method="POST" target="GranMa" onsubmit="opener.name='GranMa';setTimeout('self.close()',100);">

-- hvor opdater.php så bare redirecter til hovedsiden, når data er indsat i databasen !-)
Avatar billede blackscorpion Nybegynder
07. marts 2005 - 12:52 #29
ahh kan se jeg har formuleret mit spørgsmål en anelse forkert. *G*

<form target="FORMSNAVN" action="opdater.php" method="POST" onsubmit="setTimeout('self.close()',150);">

Den her virker PRÆCIST som den skal. :D

Roenving, smid et svar og du får point. :D
Avatar billede roenving Novice
07. marts 2005 - 12:59 #30
Velbekomme '-)

-- men sørg nu også for at strandløven får nogle af dine alt for mange point for indsatsen !-)
Avatar billede blackscorpion Nybegynder
07. marts 2005 - 13:12 #31
jamen så skal vi vente på at strandløven, gider smide et svar. :D

Men du kan få 60 point som er "svær" hvis det er okey? mener engang at have set dig sige at du ikke rørte spørgsmål med over 60 point. :D
Avatar billede roenving Novice
07. marts 2005 - 13:18 #32
-- lyder ikke helt urimeligt !-)

-- det du nok har set mig udtrykke er, at jeg, hvis jeg lige kan nå at kaste mine øjne på eet spørgsmål, og skal vælge mellem et med 200 og et med 60, automatisk vælger det med 60 !o]
Avatar billede blackscorpion Nybegynder
07. marts 2005 - 13:25 #33
okey, men det er længe siden... MEGET længe siden. :D
Avatar billede thesurfer Nybegynder
07. marts 2005 - 23:45 #34
Jamen, så lægger jeg da bare et svar :-)
Nu ikke noget med at give mig 140 points :-)
Avatar billede blackscorpion Nybegynder
07. marts 2005 - 23:58 #35
nej nej. :P
Avatar billede thesurfer Nybegynder
08. marts 2005 - 00:01 #36
hahaha :-)
Det burde ha' været omvendt, da roenving kom med den endelige løsning..
Avatar billede blackscorpion Nybegynder
08. marts 2005 - 00:05 #37
ja men set tiden i betragtning.

og det eneste som han faktisk bedragede med var setTimeout() :D

men overvejede faktisk at give dig 139 og roeving 61, bare for ikke at give dig 140 :P
Avatar billede blackscorpion Nybegynder
08. marts 2005 - 00:20 #38
men må godt nok indrømme at det virker underligt at self.close; ikke virker, men setTimeout('self.close()',150); gør... *G*
Avatar billede roenving Novice
08. marts 2005 - 02:53 #39
Det er der faktisk ikke noget underligt i ...

Det, der nemlig sker, er at self.close() bliver fyret af inde i popupvinduets del af windows-hukommelsen, hvorefter den hukommelsesdel bliver nedlagt, og alle igangværende processer i der derfor bliver nedlagt, selvfølgelig inkluderende den ikke færdiggjorte proces, som er sat igang 3/4 mikrosekund i forvejen, men ikke er blevet færdigbehandlet, da den jo kræver et tilbagesvar fra serveren !-)

-- og tak for point ;~}
Avatar billede blackscorpion Nybegynder
08. marts 2005 - 02:56 #40
ahh okey, så det hele kommer simplethen ned til at self.close() 1/4 mikrosekund for sløv i røven... syntes jeg simplethen er for dårligt. *GGG*
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