Toon posts:

[JS] controleren of een window aanwezig is

Pagina: 1
Acties:

Verwijderd

Topicstarter
Is het mogelijk om met javascript te controleren of er een window aanwezig is?
Ik weet dat je wel kunt controleren of die weer gesloten is, maar dat bedoel ik niet (if (window.closed)).
Ik bedoel dus of die uberhaupt al geopend is.
Window.opened property zal wel niet bestaan...

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

if (!windowobject.closed)

Today's subliminal thought is:


Verwijderd

Topicstarter
Dank je wel voor het antwoord Annie, maar het lijkt niet te werken. Ik heb het geprobeerd.
Hier een stukje code:
var windowHandle = null;
function openWindow() {windowHandle = window.open('window.htm','windowName','height=200,width=400');}

lastmod = document.lastModified;
datumfile=Date.parse(lastmod);
windowHandle=this;
datum=new Date();
datumpars=Date.parse(datum);
document.write(datumpars,' <br> ',datumfile);
function testje(){
if (datumpars<(datumfile+5000)){
openWindow();
}
window.location.reload();}
setTimeout("testje()",6000);

Het is dus de bedoeling dat als de huidige tijd niet veel verder is dan de tijd waarop de file gemaakt is, dat er dan een window geopend wordt. Het huidige document wordt dan nog steeds vernieuwd om de 6 sec. Alleen dat hoeft die eigenlijk niet te doen als die window geopend is.
Nou zou je inderdaad denken (volgens mij) als je gewoon dit doet:
if (!windowHandle.closed){} else {window.location.reload()};
dat die dan het wel zou doen. Alleen: dan wordt het document van begin af aan niet meer vernieuwd. Dus dat werkt ook niet. Of doe ik iets fout?

Het is trouwens de bedoeling dat ik er een mini-chat-scriptje van maak. Als die dan het chatwindow geopend heeft, dan hoeft de parent-window niet meer te reloaden.

Als je nog goede ideeen hebt, ze zijn altijd welkom...

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Als je de pagina telkens blijft herladen kan je natuurlijk de status van windowHandle niet meer opvragen. Deze bestaat dan namelijk niet meer, nou ja, jij zet 'm op het huidige window, maar dat lijkt me ook niet helemaal de bedoeling.

Als ik het allemaal goed begrepen heb dan wil je je pagina telkens laten verversen, tenzij er een window geopend is.
Als dat zo is kan je vanuit het nieuw geopende window de timer in het parent-window stoppen.

In het "normale" window zet je een timer:
code:
1
timerId = setTimeout("bla", 6000);

Hierdoor zal je pagina blijven verversen (net zoals nu).
In je nieuwe window 'clear' je de timer:
code:
1
window.opener.clearTimeout(window.opener.timerId);

HTH.

p.s. zet je code voortaan tussen [code] tags, dat maakt het een stuk leesbaarder voor ons.

Today's subliminal thought is:


Verwijderd

Topicstarter
Oops betrapt, de faq niet gelezen (het blijft ook zo'n lap tekst).

Je hebt gelijk met die windowHandle=this (ik geloof dat je dat bedoelt). Dat was inderdaad niet de bedoeling. Ik weet niet waarom die daar staat. Ik was ook van alles aan het testen en dan krijg ik dat soort dingen. De oorzaak ligt daar iig niet in. Het komt dus gewoon door dat reloaden.
Ik dacht al dat het daar door kwam. Het komt er dus op neer dat je, als je eenmaal gereload hebt, die window niet meer kunt benaderen (als ik het goed begrijp).

Ik heb je tip (met die setTimeout opgevolgd, maar het lukt (nog) niet. De parent window blijft dan gewoon doorgaan met vernieuwen. Misschien is mijn timerId met dat vernieuwen ook 'verdwenen'.

Ik heb nu iets anders gevonden dat wel werkt, geloof ik (morgen nog maar eens checken)
code:
1
2
3
4
function testje(){
if (datumpars<(datumfile+6000)){openWindow()}
else {window.location.reload()};
}

In de window dan dit toevoegen:
code:
1
onunload=window.opener.location.reload()

Eigenlijk best wel simpel eigenlijk, had ik me toch eerder kunnen bedenken.

Bedankt voor de moeite, in ieder geval. Ik ga nu maar eens naar bed toe, geloof ik :z