This may be out of left field from what you're asking but I wrote a script
called "onImagesLoaded", with a tolerance setting. I used this to fire the
jquery.flash.js script only after most of the images had been downloaded.
Some sites I've coded were overly image-heavy with the Flash at the top of
the page, so it would tend to make an ugly user-experience. If they're of
any value to you, here they are:
// Fire a specific event once all images are loaded.
function onImagesLoaded(fn,tolerance)
{
// Ensure we have a valid function.
if (!$.isFunction(fn)) return;
var images = $('img').filter(function(el,i) { return !this.complete; });
if (images.length)
{
window.$loadedImageCount = images.length;
window.$imagesLoadedTolerance = $.toInt(tolerance);
if (!window.$onImagesLoaded) window.$onImagesLoaded = [];
window.$onImagesLoaded.push(fn);
images.one('load',imageHasLoaded);
}
else
fn();
}
// Each time an image is loaded, check to see if we can fire the event.
function imageHasLoaded(e)
{
// Ensure we still have functions to execute.
if (!window.$onImagesLoaded) return;
// Reduce the number of images left.
try { window.$loadedImageCount--; } catch(ex) {}
// If we've reached 0 or the tolerance, fire the events.
if ((window.$loadedImageCount||0) <= (window.$imagesLoadedTolerance||0))
{
for (var i=0;i<window.$onImagesLoaded.length;i++)
{
if ($.isFunction(window.$onImagesLoaded[i]))
window.$onImagesLoaded[i]();
}
window.$onImagesLoaded = null;
}
}
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Karl Rudd
Sent: Friday, March 07, 2008 4:31 AM
To: [email protected]
Subject: [jQuery] Re: How to know if the entire page has loaded, AFTER it
has loaded? [advanced]
Use the "good old" "load" event.
$(window).load(function () {
// run code
});
( from http://docs.jquery.com/Events/load )
Karl Rudd
On Fri, Mar 7, 2008 at 11:10 PM, Iair Salem <[EMAIL PROTECTED]> wrote:
>
> Sorry about not being so clear: what I exactly want is to know if
> window has loaded. I need to be sure if all the IMAGES had been
> loaded, that's why jQuery.isReady is useless for me. jquery.isReady
> equals true when DOM is loaded, but not the images.
> I hope someone could help me.
> Iair Salem.
>
> PD: Please Google do something about the delay for a message to be
> seen and searchable on the group.
>
>
> On 7 mar, 09:11, Ariel Flesler <[EMAIL PROTECTED]> wrote:
> > As far as I know, document.ready will execute functions right away if
> > the dom is ready.
> > Also you can use: if( jQuery.isReady ).....
> >
> > On 6 mar, 17:46,IairSalem<[EMAIL PROTECTED]> wrote:
> >
> > > Hello everyone, I have a problem
> >
> > > The basics:
> > > $(document).ready(function(){alert("DOM Loaded")});
> > > $(window).load(function(){alert("Full Page & Images Loaded")});
> >
> > > But, what happens if I do this?:
> >
> > > $(window).load(function(){
> > > setTimeout("foo()", 2000);
> > > );
> >
> > > function foo(){
> > > $(window).load(function(){alert("this alert will never occur")}); /
> > > *calling window load() after it has been called once results in
> > > nothing happening....*/
> >
> > > }
> >
> > > This beaviour isn't the same as $(document).ready, because $
> > > (document).ready is handled by jQuery, and jQuery sets jQuery.isReady
> > > = true, and calls it inmediately.
> >
> > > Maybe I'm asking for the property jQuery.isPageLoaded which would
tell
> > > me if the entire page has loaded, also AFTER the page has loaded (for
> > > example in a click event).
> >
> > > There is a dirty workaround:
> >
> > > var isPageLoaded = false;
> > > $(window).load(
> > > function(){
> > > isPageLoaded=true;}
> >
> > > );
> >
> > > This will workaround the problem and fix it partially (because in
> > > theory this won't work when loading scripts dinamically)
> >
> > > If you have a better solution, please share it with the group.
> >
> > > Thank you,
> >
> > >IairSalem
>