[Javascript] An image loader nearly working except for IE
Hakan
hakan at backbase.com
Mon Jul 18 03:01:48 CDT 2005
Good solution. An _actual_ image _preloading_ script. :)
Regards,
H
J. Lester Novros II wrote:
> Hello everyone,
>
> I'm a longtime lurker on this list and since this thread is generating
> so much traffic I thought I'd join in and add my 2 cents to the fray.
>
> Guillaume, I've put a modified version of your testcase on my own server
> which worx in FF 1.0 win/mac/linux, Opera 8.0 win/mac/linux, Safari 2.0
> and, more to the point, in xPloder 5.0/5.5/6.0:
>
> <http://lester.demon.nl/test/imgLoaderTest.html>
>
> I've commented the script but for the impatient :) here's an explanation.
>
> Both the IMG and the masking DIV are wrapped in another DIV. The wrapper
> DIV has a 'position: relative', the mask has a 'position: absolute'.
> This results in the masking DIV exactly overlaying the image while the
> wrapper still flows with the other text in the page; I've put a few Ps
> in the page and floated the wrapper left to illustrate this. The loading
> message is yet another DIV as a child of the mask so I can position the
> text vertically thru styles [in this case a top-margin]. Finally, the
> wrapper is inserted in the document.
>
> The image gets an 'onload' handler in standards compliant browsers and
> an 'onreadystatechange' handler in xPloders. The onload handler is
> assigned a function that just sets the mask DIV's display property to
> 'none'; the onreadystatechange is a bit more involved in that it tests
> for the value of the image's 'readyState': if it has a value of
> 'complete' the function does the same as the onload function, i.e.
> setting the display property.
>
> All the above is done thru script, so a browser with script switched off
> or a script-incapable browser [such as lynx] doesn't 'see' any of this
> and gets the unmasked image embedded in a DIV between <NOSCRIPT> tags.
> The DIV, incidentally, is necessary to keep a validator from complaining
> about invalid XHTML.
>
> The only drawback I haven't been able to solve so far [but I threw this
> together in about 30mins] is that the image needs its width and height
> specifically set to set the size of the masking DIV; also I use
> 'style.width' and 'style.height' rather than 'offsetWidth' and '-height'
> which necessitates the use of 'parseInt' to position the 'loading' text.
> I assume, however, that that has something to do with the image not
> being appended to the document [and therefore not being part of the DOM]
> at the moment of querying those values. A little more tweaking would
> probably solve this.
>
> Let me know if you need anymore help.
>
> l8R lES
More information about the Javascript
mailing list