[JavaScript] Popup in een ander scherm sluiten

Pagina: 1
Acties:
  • 166 views sinds 30-01-2008
  • Reageer

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Mijn 3e topic in een week ofzo al... maargoed:
Ik heb pagina 1. Daarin open ik met javascript onsubmit een popup. In pagina twee wil ik die weer sluiten. Dat wil ik wel, maar dat javascriptje niet.

Ik heb dus het volgende gedaan om hem te openen:
code:
1
2
3
function NewWindow() {
      var newwindow = window.open("laadscherm.htm","laden","width=500","height=200")
      }

En de volgende om hem te sluiten:
code:
1
2
3
4
5
function CloseWindow() {
    if (newwindow) {
      newwindow.close()
    }
}

En, dit werkt niet, omdat de variabele 'newwindow' niet is gedefinieerd. Ofzoiets. Vage js error in ieder geval.

Hoe sluit ik nu een scherm dat ik geopend in een vorige venster. Op een actie in het tweede scherm?

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Oja, wil iemand zo vriendelijk zijn om het even te proberen? Misschien ligt het aan mij :)

Verwijderd

Je probleem is dat newWindow alleen in de eerste functie (NewWindow) bekend is (scope is alleen binnen deze method, want hij wordt binner deze functie gedeclareerd).

Oplossing: var newwindow globaal zetten, dus buiten de functies (maar binnen de <script> tag). Dan kan deze variabele door beide functies gebruikt worden!

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
MesM: hoe moet ik dan die functie aanroepen? Jij stelt dit voor?
code:
1
2
3
4
var newwindow
function NewWindow() {
      newwindow = window.open("laadscherm.htm","laden","width=500","height=200")
      }

Die werkt ook niet, let wel op dat hij naar een andere pagina gaat he? In pagina 1 opent ie een popup, hij gaat direct naar pagina 2, en als die klaar is (asp gedoe duurt 6 secondes) sluit ie hem weer... dat is dus de bedoeling...

Edit: of bedoel je dat ik alles eens in een .js file moet gooien?

Verwijderd

Geloof inderdaad dat ik het niet helemaal scherp heb!

Wat ik (nu) denk dat je wil:

pagina1 doet een submit EN opent een popup in de onsubmit.
pagina1 wordt vervangen door pagina2. (popup dtaat op scherm)
als pagian2 geladen is, moet de popup worden gesloten.

Is dit wat je wilt?

Ja:
Dan heb je een probleem, want de variabelen van pagina1 zijn opgeruimd! Dus de opgeslagen handle naar de popup is verdwenen.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

newwindow!=newwindow hoe moet de computer weten wat jij bedoeld ?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Ik heb geen ervaring met ASP, maar kun je je handle niet gewoon doorgeven aan pagina2? Dus in je submit ook een variable doorgeven met de windowhandle...

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

Je denkt dan waarschijnlijk aan een hidden input type ?

www.jurgroessen.nl


  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Op donderdag 25 oktober 2001 14:50 schreef dusty het volgende:
newwindow!=newwindow hoe moet de computer weten wat jij bedoeld ?
Hoe bedoel je?

Verwijderd

Oplossing is frames! Definieer twee frames, eentje 'onzichtbaar' met daarin je js-scripts welke ook de handle van het window vasthoud. Het tweede frame laat je pagina's zien, dus eerst pagina1 en later pagina2.

Dus als pagina1 wordt gesubmit, wordt het script in de script-frame aangeroepen ( middels onsubmit="window.top.scriptframe.newwindow();" ) en als pagina2 geladen is wordt het popup venster gesloten ( middels onload="window.top.scriptframe.closewindow();" )

pseudo code frameset pagina:
code:
1
2
3
4
  <frameset cols="0,*">
    <frame name="scriptframe" scr="scripts.html">
    <frame name="contentframe" src="pagina1.asp">
  </frameset>

scripts.html bevat dus AL je js-script

Let op dat je als target van je submit de gewenste framenaam (=contentframe) opgeeft.

Verwijderd

Ja, waarschijnlijk wel ja. Al weet ik dus niet precies hoe ik dat met ASP zou moeten doen. Een andere oplossing is een frameset om je page heen zetten, en in een onzichtbaar frame je variables bijhouden. Maar dat is wellicht een wat onelegante manier...

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Bedankt voor het meedenken :) maar helaas zijn frames geen optie. Dit is omdat ik alles is sub`s doe in zo`n asp pagina. En de dingen die veel terugkomen (<html> tot <body..) zitten al voorgedefinieerd in een bestand. Daar kan ik niet zomaar iets in aanpassen. Dat kost teveel tijd (en geld) en het is voor de rest niet nuttig. En ik krijg er een zooitje van op een gegeven moment.

Maar, het is toch gewoon... ehm, slecht dat je een popup niet kan sluiten? Wel raar in ieder geval... (ik mis een somber-'smile')

Waar zijn de gekroonde javascript Goden eigenlijk heen? Werk? ;)

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

volgens mij is blues ooit eens een topic gestart met de vraag of ie een onbekend window kon aanspreken.
Misschien dat daar iets in terug te vinden is...

enne de somber smilie = ;(

www.jurgroessen.nl


  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Op donderdag 25 oktober 2001 16:28 schreef Hangloozz het volgende:
volgens mij is blues ooit eens een topic gestart met de vraag of ie een onbekend window kon aanspreken.
Misschien dat daar iets in terug te vinden is...

enne de somber smilie = ;(
:{ die smile huilt... als die traan nou weg was... ik zit niet echt te huilen ofzo :P

Maarre, hij is opgelost inmiddels. Op pagina 1 doe ik:
code:
1
2
3
function NewWindow() {
      var newwindow = window.open("laadscherm.htm","laden","width=500","height=200")
      }

En, let nu goed op! Op pagina 2:
code:
1
2
3
4
function CloseWindow() {
      var newwindow = window.open("laadscherm.htm","laden","width=500","height=200")
      newwindow.close()
      }

Zoooo simpel, javascript en ik zullen wel nooit vrienden worden ;(

Toch nog bedankt voor alle support :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

idd, op je 2e pagina open je gewoon weer dezelfde popup (zelfde naam).
Wat ik nog kon bedenken was een loop in je popup zelf die bijvoorbeeld een waarde in een cookie checked. Pagina 2 laat je dan na het laden dat cookie zetten met die waarde. De popup leest 'm in en sluit zichzelf.

Intentionally left blank

Pagina: 1