webForumDet fria alternativet

Stänga pop-up OCH uppdatera grundsida, samtidigt?

JavaScript

25 svar · 1 081 visningar · startad av Guldstrand · sida 2 av 2

Frågan, av Guldstrand

Jag har ett pop-up fönster där man fyller i ett formulär som sedan ska postas/sparas i mysql. Frågan är, hur stänger jag pop-up fönstret OCH uppdaterar grundsidan (parent) samtidigt, när man klickar på submit-knappen? Använder följande kod till pop-up fönstret: <script> function NyttAmne(){ myleft=(screen.width)?(screen.width-500)/2:100;mytop=(screen.height)?(screen.height-500)/2:100; setti

Läs frågan i sin helhet →
Medlem sedan juli 20041 271 inlägg
#21

yador skrev:

Kan du prova att byta ut:

<script type="text/javascript">
	function SubmitForm() {
		window.opener.location = 'forum.php';
		self.close();
	}
</script>

mot:

<script type="text/javascript">
	function SubmitForm() {
		window.opener.location = 'forum.php';
		setTimeout("self.close()",3000); //vänta 3 sekunder innan self.close() körs
                return true;
	}
</script>

Problemet är säkert att all javascript kod ska köras först och pga att fönstret stängs när raden self.close(); körs så hinner aldrig formuläret postas. Men kan du inte lägga in att sidan ska stängas när man har kommit till posta_amne.php?

Testade detta, men sidan som anropar pop-up:en, uppdaterades några sekunder innan formuläret kördes klart.
Pop-up:en stängdes dock INTE.

Sidan som anropar pop-up:en, heter forum.php. Pop-up:en heter posta_amne.php.

Medlem sedan juni 20014 421 inlägg
#22

Precis det jag skriver ska du göra:

colione skrev:

uppdatera window.opener, sedan submita datan för att sedan på sidan som tar emot datan spotta ut javascriptet för att stänga sidan

Medlem sedan nov. 20014 054 inlägg
#23

colione skrev:

Precis det jag skriver ska du göra:

colione skrev:

uppdatera window.opener, sedan submita datan för att sedan på sidan som tar emot datan spotta ut javascriptet för att stänga sidan

Alternativt, posta datan, uppdatera window.opener, i sidan som tog i mot postningen har man satt en body med onload="self.close()" .. window.opener måste ju uppdateras efter submiten, om man skall se någon skillnad. :)

Medlem sedan juli 20041 271 inlägg
#24

Förstår tyvärr inte riktigt.
Posta gärna en komplett kod, samt på vilken sida den ska infogas.

*börjar snurra riktigt i skallen*

Jag använder följande kod på forum.php för att anropa pop-up:en.

<script type="text/javascript">
function NyttAmne(){
myleft=(screen.width)?(screen.width-500)/2:100;mytop=(screen.height)?(screen.height-500)/2:100;
settings='top=' + mytop + ',left=' + myleft + ',width=500,height=500,location=no,directories=no,menubar=no,toolbar=no,status=no,scrollbars=no,resizable=no,fullscreen=no'
PopupWin=window.open('posta_amne.php','PopupWin', settings);
PopupWin.focus();}
</script>

EDIT: Jag lade till...

die( "<script>window.opener.location.reload();window.close();</script>");

..efter all input till mysql (i pop-up:en). Nu verkar det fungera som det ska.

Är detta ett bra sätt att göra detta på?

Medlem sedan nov. 20014 054 inlägg
#25

Okei kort och gott.

1 ) forum.php öppnar posta_amne.php i en popup (forum.php fönstret är window.opener)

2 ) Du gör en postning via ett forumlär i popupfönstret till någon sida: i detta till sig själv (posta_amne.php)

3 ) efter postningen är gjord. Så kan man köra ex.

// phpkod för att lägga in data i ex. databas eller något annat. 
// när det är utfört, så kan man skriva ut:
echo "<body onload=\"window.opener.location='forum.php';self.close();\"></body>";

Tror det skall funka.. :)

Medlem sedan juli 20041 271 inlägg
#26

Fredde Mannen skrev:

Okei kort och gott.

1 ) forum.php öppnar posta_amne.php i en popup (forum.php fönstret är window.opener)

2 ) Du gör en postning via ett forumlär i popupfönstret till någon sida: i detta till sig själv (posta_amne.php)

3 ) efter postningen är gjord. Så kan man köra ex.

// phpkod för att lägga in data i ex. databas eller något annat. 
// när det är utfört, så kan man skriva ut:
echo "<body onload=\"window.opener.location='forum.php';self.close();\"></body>";

Tror det skall funka.. :)

Ok.. nu förstår jag LITE bättre. :e
Men gör inte denna kod samma sak:

 die( "<script>window.opener.location.reload();window.close();</script>");
265 ms totalt · 4 externa anrop · v20260731065814-full.20824b9f
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)