Toon posts:

[JS] variable undefined bij sluiten nieuw venster

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na al vele zoekacties alhier en op google kom ik er nog niet uit.

Ik heb een Javascriptje geschreven dat een venster opent waarin een aantal acties worden gedaan. Dit venster moet zichzelf weer sluiten. Volgens de volgende code werkt het prima:
code:
1
2
3
4
function openandclose(url) {
    var NewWindow = window.open(url, 'DocDownload', 'status=yes,toolbar=yes,menubar=yes,width=500,height=300');
    NewWindow.close();
}

Wanneer ik er een timeout
code:
1
setTimeout('NewWindow.close()',2500);

bij zet, krijg ik deze melding
Error: 'NewWindow' is undefined
.

Wat mis ik hier?

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ik denk dat die close te snel is, dus dat ie wordt aangeroepen nog voordat het venster is aangemaakt.
Dus moet je in de code van die pagina die je opent gewoon een close() doen, bij een onload ofzo :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

NewWindow wordt met die var ervoor in de functie als locale variabele gedefineerd. Die is niet vanuit een andere plek te benaderen dan IN die functie. Als je die var weghaalt wordt ie globaal, maar dat alleen is een beetje slordig, dus ik zou nog een var <varNaam> buiten de functie bovenaan je code neerzetten, en um zo dus globaal declareren. Maar die var in die methode moet iig weg.

Iets anders is dat variabelen meestal met een kleine letter beginnen, en de daaropvolgende zelfstandige naamwoorden met een hoofdletter, da's een beetje de algemene conventie waar de meesten zich wel aan houden, dus liever

newWindow

dan

NewWindow

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
Op donderdag 16 mei 2002 09:35 schreef XLerator het volgende:
Ik denk dat die close te snel is
maar als ik hem gelijk sluit (zonder de timeout) doet 'ie het wel :?
Op donderdag 16 mei 2002 09:38 schreef Clay het volgende:
NewWindow wordt met die var ervoor in de functie als locale variabele gedefineerd. Die is niet vanuit een andere plek te benaderen dan IN die functie
Is setTimeOut een nieuwe functie dan? Hij doet het overigens wel als ik var newWindow buiten de functie plaats.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Die timeout wordt welliswaar in die methode geSet, maar de uitvoering ervan is globaal en komt na de ingestelde tijd, (zijn ook hier op got wel meer discussies over geweest). Je script "loopt" dan dus ook niet meer in die methode, daar is die al uit, en de var zoals je die in de methode aanmaakte is dan al weer weg. Dat is waarom het globaal wel werkt, en waarom je met timeouts ook nooit:

setTimeout("this.objectMethode()", tijd)

kan doen. (bij het gebruik van objecten dan)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin