advanceret preload
Jeg skal have lavet et script der preloader nogle billeder og viser en progressbar for dette. Jeg kan så absolut ikke bruge eksemplet fra dynamicdrive.com, fordi det kun tillader grafik på 1x1, som bliver gentaget hen over min progressbar... jeg har en grafik der er 24x20 og som skal gentages 10x over 240 pixel.Jeg troede jeg havde lavet en smart work-around, men det viste sig at jeg ikke havde. Den den sætter blok 2 til done før blok 1, hvilket jo indikere at der er noget ravende galt. Resten af de resterende 8 blokke kommer rigtig nok.
Her er lidt kode: (den modificerede kode af det opringelige script fra dynamicdrive.com)
var locationAfterPreload = "o3c.asp" // URL of the page after preload finishes
var lengthOfPreloadBar = 240 // Length of preload bar (in pixels)
var heightOfPreloadBar = 20 // Height of preload bar (in pixels)
var yourImages = new Array(
<% set rs = Conn.Execute("SELECT * FROM preload")
do while not rs.eof %>
<%="""" & Replace(rs("preloadPath"), "{LANG}", returnLang) & """"%>
<% rs.MoveNext
if not rs.eof then
Response.Write ","
end if
loop %>
);
// Do not modify anything beyond this point!
if (document.images) {
var dots = new Array()
dots[0] = new Image(24,20)
dots[0].src = "images/prgnone.gif" // default preloadbar color (note: You can substitute it with your image, but it has to be 1x1 size)
dots[1] = new Image(24,20)
dots[1].src = "graphics/progressbar.gif" // color of bar as preloading progresses (same note as above)
var preImages = new Array(),coverage = Math.floor(lengthOfPreloadBar/yourImages.length),currCount = 0
var loaded = new Array(),i,covered,timerID
var leftOverWidth = lengthOfPreloadBar%coverage
}
function loadImages() {
for (i = 0; i < yourImages.length; i++) {
preImages[i] = new Image()
preImages[i].src = yourImages[i]
}
for (i = 0; i < preImages.length; i++) {
loaded[i] = false
}
checkLoad()
}
function checkLoad() {
if (currCount == preImages.length) {
//location.replace(locationAfterPreload)
return
}
for (i = 0; i <= preImages.length; i++) {
if (loaded[i] == false && preImages[i].complete) {
loaded[i] = true;
imgrange = (i/(preImages.length/10))-1;
if (imgrange <= 0){
imgrange += 1;
}
eval("document.img" + Math.round(imgrange) + ".src=dots[1].src");
currCount++
}
}
timerID = setTimeout("checkLoad()",10)
}
BODY-del
if (document.images) {
var preloadBar = ''
//var runover = yourImages.length-1;
var runover = 9
for (i = 0; i < runover; i++) {
preloadBar += '<img src="' + dots[0].src + '" width="24" height="' + heightOfPreloadBar + '" name="img' + i + '" align="absmiddle">';
}
preloadBar += '<img src="' + dots[0].src + '" width="24" " height="' + heightOfPreloadBar + '" name="img' + (runover) + '" align="absmiddle">';
document.write(preloadBar);
loadImages();
}
er der en skrap javascripter der lige kan løse den?
