Avatar billede mireigi Novice
09. marts 2009 - 14:15 Der er 14 kommentarer og
1 løsning

Afvikle script efter siden er indlæst

Hej eksperter,

Jeg har et lille problem med et script der skal køres på en webside.
Efter en form er blevet afsendt kontrolleres der på serveren om den indtastede CAPTCHA kode er korrekt. Hvis koden er forkert, vises formen igen med alle indtastede data og en besked vises:

alert("CAPTCHA koden er forkert.");

Siden er "modulært" opbygget via ASP. Det vil sige at der i "Default.asp" er inkluderet alle sider der skal vises. Fx ligger ovennævnte formular i:
<!--#include virtual="section/tilmelding.asp"-->

På grund af denne opbygning, vil ovennævnte "alert()" blive kørt i slutningen af indlæsningen af "tilmelding.asp", og dermed før "default.asp" er færdig med at indlæse alt indholdet. Dette giver websiden et grimt udseende indtil brugeren lukker "alert()"-boksen.

Mit spørgsmål er derfor:
Hvordan tilknytter jeg en event, til hele websiden, som køres efter siden er færdig med at indlæse alt layout?

Mvh.
MiReiGi
Avatar billede jensgram Nybegynder
09. marts 2009 - 14:20 #1
Den simple:

document.onload = function() {
    alert("...");
}
Avatar billede Slater Ekspert
09. marts 2009 - 14:40 #2
Og det er naturligvis en fortalelse, men det er window.onload :)

Den er dog ikke altid helt hensigtsmæssig, da alle billeder og grafik også skal være indlæst før den kører, men hvis man kan leve med det, er det da løsningen.
Avatar billede jensgram Nybegynder
09. marts 2009 - 15:30 #3
viperine > Ja, naturligvis :)
Avatar billede mireigi Novice
09. marts 2009 - 15:54 #4
For det første mange tak for jeres svar.
Desværre virker window.onload ikke.

I eksemplet herunder indlæses alt koden med fed ikke før brugeren lukker "alert()"-boksen:

<html>
  <head>
    <title>demo side</title>
  </head>
  <body>
    <table border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>
          <div style="width:400px; height:250px;">
            <h1>Dette er en test!</h1>
          </div>
          <script language="javascript" type="text/javascript">
            function loadMig()
            {
              alert("Dette er en test");
            }
            window.onload = loadMig();
          </script>
    </td>
      </tr>
    </table>
  </body>
</html>




Jeg fandt dog en løsning:

<html>
  <head>
    <title>demo side</title>
  </head>
  <body>
    <table border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>
          <div style="width:400px; height:250px;">
            <h1>Dette er en test!</h1>
          </div>
          <script language="javascript" type="text/javascript">
            function loadMig()
            {
              alert("Dette er en test");
            }
            window.setTimeOut(loadMig, 0);
          </script>
        </td>
      </tr>
    </table>
  </body>
</html>
Avatar billede jensgram Nybegynder
09. marts 2009 - 21:29 #5
window.onload = loadMig; (bemærk: Ingen parenteser) vil virke.
Avatar billede majbom Novice
10. marts 2009 - 08:48 #6
du kunne også smide:

<script language="javascript" type="text/javascript">
            function loadMig()
            {
              alert("Dette er en test");
            }
            window.setTimeOut(loadMig, 0);
          </script>


ned så det er det sidste i koden, det ør jo ingen forskel
Avatar billede mireigi Novice
10. marts 2009 - 11:56 #7
Jeg er ikke så glad for at have <script>-tags liggende efter </body>-tagget. Desuden er det ikke praktisk muligt da bunden af siden også er inkluderet fra en anden fil :)
Avatar billede majbom Novice
10. marts 2009 - 12:06 #8
jeg mente også efter </table> og før </body> :)

men det var jo ikke til at se at din kode ikke så ud som det du postede ;)
Avatar billede mireigi Novice
10. marts 2009 - 12:13 #9
Din idé er meget god, men som du selv siger så har du ikke set resten af min kode :)

<!--#include virtual="section/bottom.asp"-->

starter med:
        </table>
    </td>
</tr>

Så lidt bøvle-øvle-øv at skulle smide et <script> ind før </body> der ligger i selvsamme fil :)
Avatar billede majbom Novice
10. marts 2009 - 12:42 #10
jeg ved ikke om det virker, men har du prøvet jensgrams forslag i #5?
Avatar billede olebole Juniormester
10. marts 2009 - 14:13 #11
<ole>

Dette virker helt sikkert - uanset, hvor det anbringes i dokumentet:

          <script type="text/javascript">
            function loadMig()
            {
              alert("Dette er en test");
            }
            window.onload = loadMig;
          </script>

/mvh
</bole>
Avatar billede majbom Novice
10. marts 2009 - 14:30 #12
-> #11 - bare i orden så ;)
Avatar billede olebole Juniormester
10. marts 2009 - 15:05 #13
Hehe ... og det er præcis det samme, som jensgram skrev i #5. Jeg påpeger blot rigtigheden af det  =)
Avatar billede mireigi Novice
12. marts 2009 - 08:23 #14
Jamen det virker jo fint uden paranteser på :)

jensgram, smider du et svar? Du kom med den rigtige løsning først.
Avatar billede mireigi Novice
09. december 2009 - 12:51 #15
Jeg lukker her.
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