[JS] functie aanroepen in ander frame bij onload

Pagina: 1
Acties:

  • whitey-d
  • Registratie: April 2000
  • Laatst online: 08-08 19:24
Voor het "synchroniseren" v/d inhoud van verschillende frames wil ik javascript gebruiken, op het moment dat de pagina's geladen worden.
In dit geval: er is een menuframe waar een pijltje staat voor het geselecteerde item (dat zich in de inhoudframe geladen heeft) en daarnaast bevindt zich de inhoudframe. De frameset:

code:
1
2
3
4
<frameset cols="207,*" frameborder="NO" border="0" framespacing="0"> 
  <frame name="menuFrame" scrolling="NO" noresize src="menu.htm">
  <frame name="inhoudFrame" src="inhoud.htm">
</frameset>


Nu wil ik via het onload event in inhoud.htm een functie aanroepen in menu.htm die ervoor zorgt dat ten allen tijde het pijltje op de goeie plek staat (voor het juiste item). In de functie in menu.htm spreek ik het document.images object aan voor de verwijzing naar het betreffende plaatje. Meestal gaat dit gewoon goed als het menuframe al geladen is. Maar als ik via een andere knop (buiten deze frameset) de pagina's laad krijg ik meestal de foutmelding dat document.images(blabla) niet bestaat, terwijl de ingevoerde variabelen e.d. wel kloppen. Overigens is het euvel weg op het moment dat ik een alert(blabla) neerzet in de functie. Het lijkt wel een kwestie van timing te zijn, waarbij het menuframe zich later laadt dan het inhoudframe.
Weet iemand hoe dat zit en hoe je dat m.b.v. javascript het beste kunt regelen zonder errors?

“Advertising says to people, 'Here's what we've got. Here's what it will do for you. Here's how to get it.'”


  • WvdWest
  • Registratie: Augustus 2002
  • Niet online
Kan je dan niet in het menuframe de naam van de inhoudspagina opvragen en daarmee het pijltje aanpassen?

I'm not a complete idiot - several parts are missing.


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

Annie

amateur megalomaan

voor de vorm zet ik het antwoord wat ik in /14 gaf ook maar even hier

pseudo code:
code:
1
2
3
bestaat object?
    ja:  doYourStuff();
    nee: tryAgainLater();

Today's subliminal thought is:


  • whitey-d
  • Registratie: April 2000
  • Laatst online: 08-08 19:24
Annie: ik had em al gezien inderdaad: zoiets had ik ook geïmplementeerd (behalve dat tryAgainLater) om de errors weg te krijgen. Maar het leek me netter om rekening te houden met volgorde van de opbouw van frames zodat het vanzelf goed gaat. Of is er een nette manier om dat tryAgainLater simpel te houden?

“Advertising says to people, 'Here's what we've got. Here's what it will do for you. Here's how to get it.'”


  • whitey-d
  • Registratie: April 2000
  • Laatst online: 08-08 19:24
WvdWest: het probleem is dat je altijd een event krijgt uit het inhoudframe, omdat alleen die vervangen/herladen wordt als je bijv. op de terugknop ramt. Dus dan hou je toch dat timingsprobleem.
Misschien is het beter om te vragen: welke vuistregels moet je aanhouden om javascript-communicatie tussen frames onderling soepel te laten verlopen?

“Advertising says to people, 'Here's what we've got. Here's what it will do for you. Here's how to get it.'”


Verwijderd

Wellicht heb je hier wat aan. Er wordt rekening gehouden met de volgorde van laden :
Het anderes script bepaalt wanneer een pagina volledig geladen is :
VOLGORDE
FRAME GELADEN

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

Annie

amateur megalomaan

whitey-d schreef op 06 augustus 2002 @ 15:43:
Of is er een nette manier om dat tryAgainLater simpel te houden?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript">
function doOnloadThingy()
{
  if (object)
  {
    doSomething();
  }
  else
  {
    setTimeout("doOnloadThingy()", 500);
  }
}
</script>
simpel genoeg :?

Today's subliminal thought is:


  • whitey-d
  • Registratie: April 2000
  • Laatst online: 08-08 19:24
ok, ik denk dat ik het nu weer een stuk helderder heb allemaal, die timeout is sowieso een stuk simpeler dan ik dacht.. En die onload vanuit de frameset file kan ook een hoop oplossen. Thanks y'all, voor de goeie tips.
Ik weet nu even geen vragen meer, mochten er nog nieuwe dingen in mijn hoofd opkomen dan post ik het wel weer.

“Advertising says to people, 'Here's what we've got. Here's what it will do for you. Here's how to get it.'”

Pagina: 1