Oops, set typing in motion before engaging brain .... Setting 'On'
will defeat the object :o Stupid idea!

On Feb 16, 2:04 pm, "Richard D. Worth" <[EMAIL PROTECTED]> wrote:
> On Feb 15, 2008 6:55 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]>
> wrote:
>
>
>
>
>
> > I finally finished it ....
>
> >  // detect whether images are on
> > // and change styles accordingly
> > jQuery.imagesOn = function(){
>
> >     $('<img src="' + '/images/bgimage.jpg' + '#' + Math.random() + '"/
> > >' ).load(function() {
> >          $('#noimages').attr("href", '/styles/gotimages.css');
> >          $('.imagecheck').html('On');
> >     });
>
> >     if ( $('.imagecheck').val() != 'On' ) {
> >          $('#noimages').attr("href", '/styles/imagefree.css');
> >     }
> > }
>
> The problem here is your .load callback will get called at some point in the
> future, when the image finishes loading. However, the next line will get
> executed immediately, without waiting for that. While this may work in some
> cases (perhaps your tests), it may not if the image is too large or if the
> server is slow in responding, for example. So, I don't think this is a good
> test.
>
> > (hack:  there is a hidden paragraph to hold the 'variable')
>
> A simple variable here works just as well:
>
> var imgOn = false;
>
> $('<img src="' + '/images/bgimage.jpg' + '#' + Math.random() + '"/>'
> ).load(function() {
>   $('#noimages').attr("href", '/styles/gotimages.css');
>   imgOn = true;
>
> });
>
> alert(imgOn);
>
> But you have the same problem as above: your alert could very well fire
> before the image is loaded, and the callback fired.
>
> - Richard

Reply via email to