32

I'm new to JavaScript.

I would like to call JavaScript / jQuery function after the page load in aspx page.

I tried using <form onload="function()"> and window.load = function(){}, but the JavaScript is still trigger before some of the content fully loaded.

Is it possible to call during Page_PreRender in aspx page and not in code behind, so that I can delay the JavaScript function ?

I tried setTimeout("function()",5000) to solve the problem.

However setTimeout() seem like is not compatible with some browser, e.g: caused looping in Google Chrome.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
sams5817
  • 1,037
  • 10
  • 34
  • 49

5 Answers5

76

setTimeout is compatible with all browsers since 1996. You should avoid the evaluation of "functionName()" and instead do:

setTimeout(functionName,5000)

UPDATE: If you initially expect a variable passed to the function and none when in the timeout, you need to do this instead:

setTimeout(function() { functionName() },5000)

However you are calling the onload incorrectly, so you need to do either this:

window.addEventListener("load",function() {
  // your stuff
}

or the simpler

window.onload=function() {
  // your stuff
}

or, since you are using jQuery, this:

$(document).ready(function() {
    // your stuff
});

or just this:

$(function() {
    // your stuff
});
mplungjan
  • 169,008
  • 28
  • 173
  • 236
5

If you want to be 100% sure that it's when the page ACTUALLY loads, use:

$(window).load(function(){
   //After EVERYTHING loads, including images.
})

The other's solution, onload works, but it loads once the DOM is ready, but not when the window is actually finished loading.

Oscar Godson
  • 31,662
  • 41
  • 121
  • 201
3

If you're going to be using jQuery then it's preferable to attach an event to the document ready event using one of the following:

$(document).ready(callback);

or

$(document).ready(function () { /* do stuff */ });

or

$(callback);

or

$(function () { /* do stuff */ });
Ken Browning
  • 28,693
  • 6
  • 56
  • 68
1
$(document).ready(function(){ 

   //Code goes here

});

or old style

<body onload="myFunction()">
talha2k
  • 24,937
  • 4
  • 62
  • 81
MadBender
  • 1,438
  • 12
  • 15
0

Would be best to use a framework like jQuery.
In jQuery you can define a function like this:

$(document).ready(function() {

});

This way it will be called when the DOM is fully loaded.

A full documentation of the ready() function can be found here.

Karsten
  • 1,814
  • 2
  • 17
  • 32