Avatar billede thulstrup Nybegynder
25. april 2003 - 18:19 Der er 6 kommentarer og
1 løsning

Funktion bliver kaldt for tidligt

Jeg har et frameset der ser sådan her ud:

<frameset rows="*,0" frameborder="NO" border="0" framespacing="0">
  <frame src="flashpage.php" name="main" frameborder="NO">
  <frame src="nyheder.php" name="bottom" frameborder="NO">
</frameset>


Siden nyheder.php indeholder et javascript, der starter en funktion på siden flashpage.php, det ser sådan her ud:

<body>
  <script language="JavaScript">
    parent.main.setPage('nyheder');
  </script>
</body>


Funktionen på flashpage.php ser sådan her ud:

function setPage(newPage) {
    if (window.document.sideId) {
        window.document.sideId.SetVariable("page", newPage);
    }
}


Mit problem er at mange gange når nyheder.php at loade og kalde funktionen setPage INDEN flashpage.php er loadet færdig. Når det sker bliver funktionen af gode grunde ikke kørt. Hvad kan jeg gøre for at undgå det?
Avatar billede -master-d- Nybegynder
25. april 2003 - 18:23 #1
Prøv at lave den så at det er flashpage som åbner funktionen.

<frameset rows="*,0" frameborder="NO" border="0" framespacing="0">
  <frame src="flashpage.php" name="main" frameborder="NO" onload="parent.bottom.start(); ">
  <frame src="nyheder.php" name="bottom" frameborder="NO">
</frameset>

og så skal scriptet være dette :


<script language="JavaScript">
function start (){
parent.main.setPage('nyheder');
}
</script>
Avatar billede -master-d- Nybegynder
25. april 2003 - 18:26 #2
Virker det ???

Ellers så prøv at lave flashpage sådan her :

---------------flahpage.php -----------------------
<body onload="parent.bottom.start();">
PHP......
</body>
---------------------------------------------------

Så skulle det ihvert fald gerne virke.
Avatar billede =maddog= Nybegynder
25. april 2003 - 19:00 #3
du kan også sætte en timer til at vente på dine frames er læst færdig

<body>
  <script language="JavaScript">
    function frameWait() {
        // wait 10ms for parent to load.
        if (parent.frames.length!=2) window.setTimeout(frameWait,10);
        // if loaded resume the script
        else parent.main.setPage('nyheder');
    }
  </script>
</body>
Avatar billede thulstrup Nybegynder
25. april 2003 - 19:08 #4
Med lidt modifikationer virker det, men det giver et nyt problem. jeg kalder nemlig fra flash de forskellige sider, f.eks:

on (release) {
    getURL("nyheder.php", "bottom");
}

Ideen er at javascriptet kører automatisk, men nu ligger det jo i en funktion, så det gør det ikke mere. Er der ikke en anden måde at løse det på, hvor man undgår at,

parent.main.setPage('nyheder');

ligger i en funktion?
Avatar billede thulstrup Nybegynder
25. april 2003 - 19:14 #5
Ok, jeg tror måske det virker med:

<script language="JavaScript">
function start (){
    parent.main.setPage('nyheder');
}
start()
</script>

Tester det lige og vender tilbage
Avatar billede =maddog= Nybegynder
25. april 2003 - 19:36 #6
<body>
  <script language="JavaScript">
    onload = frameWait;
    function frameWait() {
        // wait 10ms for parent to load.
        if (parent.frames.length!=2) window.setTimeout(frameWait,10);
        // if loaded resume the script
        else parent.main.setPage('nyheder');
    }
  </script>
</body>

og så kører det automatisk igen.
Avatar billede thulstrup Nybegynder
26. april 2003 - 10:07 #7
=maddog= jeg kan ikke få det til at virke med dit script, funktionen bliver stadig kaldt så snart nyheder.php er loadet, også selv om flashpage.php ikke er det.

Scriptet jeg testede virker hver gang. Funktionen bliver stadig nogengange kaldt for tideligt, men så bliver den kaldt igen når flashpage.php er loadet. Det giver desværre en fejlmeddelse (nede i venstre hjørne), da der bliver kaldt en funktion som ikke findes, men det må jeg vel leve med.

Tak for hjælpen og i er selvfølgelig mere end velkommen til at skrive hvis i finder på en bedre løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester