Introduction
A common question on (web) programming forums for beginners, you can find the "How do I perform various actions as soon as the page loads on the client side in JavaScript?"
These questions will mostly be answered by either "Use document.ready" or "Use window.load" sporadically.
It is quite common that people need to attach some actions to the
Page_Load
event on the client side. However there are two main functions that I frequently see mixed with each other when served to the beginning programmer, confusing when to use which.
Misusing
document.ready
and window.load
can at times be irrelevant but on other occasions may prove critically wrong programming, especially when UI manipulation is crucial!document.ready (jQuery)
document.ready
will execute right after the HTML document is loaded property, and the DOM is ready.
DOM: The Document Object Model (DOM) is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents.
Hide Copy Code
$(document).ready(function()
{
// executes when HTML-Document is loaded and DOM is ready
alert("(document).ready was called - document is ready!");
});
document.ready (a jQuery event) will fire when all the elements are in place, and they can be referenced in the JS code, but the content is not necessarily loaded.
Warning - If you want to use the Height, Width properties of an image for example, then
document.ready
is a deal braker!!
Hide Copy Code
// Another interesting approach for this event:
document.observe("dom:loaded", function()
{
// do_stuff();
});
* See more on document.observe on prototypejs.org
window.load (Built-in JavaScript)
The
window.load
however will wait for the page to be fully loaded, this includes inner frames, images etc.
Hide Copy Code
$(window).load(function()
{
// executes when complete page is fully loaded, including all frames, objects and images
alert("(window).load was called - window is loaded!");
});
*
window.load
is a built-in JavaScript method, it is known to have some quirks in old browsers (IE6, IE8, old FF and Opera versions) but will generally work in all of them.window.load
can be used in the body's onload
event like this (but I would strongly suggest you avoid mixing code like this in the HTML, as it is a source for confusion later on):
Hide Copy Code
<html>
<head>
<script>
function foo()
{
alert("Page loaded!");
}
</script>
</head>
<body onload="foo()">
<h1>I didn't do it!</h1>
</body>
</html>
Warning - Do not confuse the
load
method of the window
element with the jQuery AJAX's load method!!!
Hide Copy Code
// This is the AJAX load
$("#MyDivID").load("content_page.txt");
No comments:
Post a Comment