[Javascript] setTimeout en navigeer probleem

Pagina: 1
Acties:

  • dafz0r
  • Registratie: April 2003
  • Laatst online: 12-02 12:50
Ik had net een heel uitgebreide post gemaakt maar eigenlijk is dit de essentie:
Mijn werkomgeving is een IE activexcontrol met wat macros rond en ik ben gebonden aan html, javascript en xml.
Ik heb een loop van schermen die de flow, timeout en plaats in de flow dmv javascript uit een settingsfile gaat lezen en op basis daarvan oneindig lang navigeert. Verder sturen mijn schermen niets, het is altijd mijn applicatie die html paginas op het scherm zal zetten in het activexcontrol.
Nu krijg ik hetvolgende probleem: Ik lees welk scherm ik moet tonen en op basis van de timeout doe ik setTimeout('navigeer()', timeout);
de navigeer functie gaat dan nog wat checken en doet daarna een location.replace.
Dit loopt allemaal heel fijn tot dat de applicatie beslist dat het tijd is om de loop ver verlaten en een andere pagina te tonen. Op dat moment zet hij een nieuwe pagina in de activexcontrol maar als dan de timeout afloopt navigeert mijn pagina alsnog naar de volgende pagina in mijn flow. Dus eigenlijk blijft mijn javascript executen ook al is de pagina reeds long gone.

Nu zijn er volgens mij 2 dingen te proberen.
- een functie schrijven die alle javascript killt at page exit
- navigeren op een andere manier. Daarvoor heb ik geprobeerd om de meta refresh at runtime te schrijven maar daar luisters hij persies niet echt naar.

Enig tip/oplossing is welkom :)

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

Kun je niet gewoon de timeout cancellen met clearTimeout?

  • dafz0r
  • Registratie: April 2003
  • Laatst online: 12-02 12:50
mja, probleem is dat ik geen controle heb over wat er op dat moment gebeurd, tenzijn er misschien een onunload functie bestaat, of iets dat altijd wordt aangeroepen als de pagina vervangen wordt

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
dafz0r schreef op maandag 11 september 2006 @ 10:54:
iets dat altijd wordt aangeroepen als de pagina vervangen wordt
De pagina die geladen wordt zelf bijvoorbeeld?

Je kunt in de pagina die je gaat laden een clearTimeout zetten. Nu heb ik weinig verstand van ActiveX, dus weet ik niet of met het vervangen van een pagina middels ActiveXControl de eventueel aanwezige javascript ook geexecute wordt.

Wat anders natuurlijk kan is dat de functie navigate zelf de clearTimeout uitvoert, of heb ik je script dan niet goed begrepen?

  • dafz0r
  • Registratie: April 2003
  • Laatst online: 12-02 12:50
ik heb dus een globale variabele die toID heet.
ik heb een onloadscript dat vanalles doet onload (zoals png alpha trans fixen) etc en als laatste doet dat een toID = setTimeout('navigate()', timeout);
in de vavigate functie doe ik
code:
1
2
if {toID} {clearTimeout(toID);
toID=0;

Probleem is dus dat die timeout wel blijft staan tussen de set en de clear en het is daartussen dat er uit de loop gegaan wordt en dat ik de timeout moet clearen.
ben ff aan het proberen met window.onunload (bestaat dus toch :D)

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

window.onunload bestaat idd, die kun je daar voor gebruiken. Als je dan al je timers in een array bijhoudt kun je ze eenvoudig clearen.
Pagina: 1