Hvordan kaller jeg en JavaScript-funksjon ved sideinnlasting?

Tradisjonelt, for å kalle en JavaScript-funksjon når siden er lastet inn, legger du til et "onload"-attributt i brødteksten som inneholder litt JavaScript (vanligvis bare kaller en funksjon).

<body onload="foo()">

Når siden er lastet inn, vil jeg kjøre litt JavaScript-kode for dynamisk å fylle deler av siden med data fra serveren. Jeg kan ikke bruke onload-attributtet siden jeg bruker JSP-fragmenter, som ikke har noe body-element jeg kan legge til et attributt til.

Er det noen annen måte å kalle en JavaScript-funksjon ved innlasting? Jeg vil helst ikke bruke jQuery da jeg ikke er veldig kjent med det.

Løsning

Hvis du vil at onload-metoden skal ta parametere, kan du gjøre noe som ligner på dette:

window.onload = function() {
  yourFunction(param1, param2);
};

Dette binder onload til en anonym funksjon, som når den påkalles, vil kjøre ønsket funksjon, med de parameterne du gir den. Og selvfølgelig kan du kjøre mer enn én funksjon fra innsiden av den anonyme funksjonen.

Kommentarer (4)

Ditt opprinnelige spørsmål var uklart, forutsatt at Kevins redigering/tolkning er riktig, gjelder ikke dette første alternativet.

De typiske alternativene er å bruke onload-hendelsen:


....

Du kan også plassere javascriptet ditt helt på slutten av brødteksten; det vil ikke begynne å kjøre før dokumentet er ferdig.


  ...
  <script type="text/javascript">
    SomeFunction();
  </script>

Og et annet alternativ er å vurdere å bruke et JS-rammeverk som iboende gjør dette:

// jQuery
$(document).ready( function () {
  SomeFunction();
});
Kommentarer (3)
function yourfunction() { /* do stuff on page load */ }

window.onload = yourfunction;

Eller med jQuery hvis du vil:

$(function(){
   yourfunction();
});

Hvis du vil kalle mer enn én funksjon ved sideinnlasting, kan du ta en titt på denne artikkelen for mer informasjon:

Kommentarer (5)