Jodå, har du ett preload-javascript ska det inte vara några problem att knyta ihop det med lite asp-kod som slänger in alla bilder i en mapp.
Så: hitta ett preloadscript som du trivs med så ska det nog gå att ordna.
mvh
17 svar · 655 visningar · startad av Troll
Nu vet jag inte om ASP är det bästa sättet att lösa detta på så om ni kommer på något effektivare så kom gärna med tips Nåväl, nu till frågan... Är det möjligt att på något sett preloada en mapp på servern som innehåller ett antal mindre .gif/.jpg bilder?
De exempel på preloaders som jag har tittat på tidigare [JavaScript] så är man tvugen att skriva in bilderna manuellt och jag tänkte att det skulle bli bra mycket smidigare att istället köra igenom en hel mapp så att man bara behöver lägga in bilderna i mappen istället för att sitta och skriva in filnamnen som ska laddas.
Någon som har några tips/förslag?
Jodå, har du ett preload-javascript ska det inte vara några problem att knyta ihop det med lite asp-kod som slänger in alla bilder i en mapp.
Så: hitta ett preloadscript som du trivs med så ska det nog gå att ordna.
mvh
Skulle gärna vilja ha ett sånt script jag.
Här är ett scriptexempel som fungerar bra.
<script language="JavaScript1.1">
<!--
/*
preloader by marcin wojtowicz [one_spook@hotmail.com])
*/
var locationAfterPreload = "index_2.htm"
var lengthOfPreloadBar = 150
var heightOfPreloadBar = 3
var yourImages = new Array("images/index_01.jpg","images/index_02.jpg","images/index_03.jpg","images/index_04.jpg","images/index_05.jpg","images/index_06.jpg","images/spacer.gif","images/index_08.jpg","images/index_09.jpg","images/index_10.jpg","images/index_11.jpg","images/index_12.jpg","images/index_13.jpg","images/b.jpg","images/b1.jpg","images/b2.jpg","img/00.gif","img/01.jpg","img/02.jpg","img/03.jpg","img/04.jpg","img/05.jpg","img/06.jpg","img/07.jpg","img/08.jpg","img/09.jpg","img/10.jpg","img/11.jpg","img/12.jpg","img/13.gif","img/13.jpg","img/14.jpg","img/15.jpg","img/16.jpg","img/17.jpg","img/18.jpg","img/19.jpg","img/20.jpg","img/21.jpg","img/22.jpg","img/23.jpg","img/24.jpg","img/25.jpg")
if (document.images) {
var dots = new Array()
dots[0] = new Image(1,1)
dots[0].src = "images/2.gif"
dots[1] = new Image(1,1)
dots[1].src = "images/1.gif"
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
eval("document.img" + currCount + ".src=dots[1].src")
currCount++
}
}
timerID = setTimeout("checkLoad()",10)
}
//-->
</script>
</head>
<body bgcolor="#303030">
<script language="JavaScript1.1">
<!--
if (document.images) {
var preloadBar = ''
for (i = 0; i < yourImages.length-1; i++) {
preloadBar += '<img src="' + dots[0].src + '" width="' + coverage + '" height="' + heightOfPreloadBar + '" name="img' + i + '" align="absmiddle">'
}
preloadBar += '<img src="' + dots[0].src + '" width="' + (leftOverWidth+coverage) + '" height="' + heightOfPreloadBar + '" name="img' + (yourImages.length-1) + '" align="absmiddle">'
document.write(preloadBar)
loadImages()
}
// document.write('<p><small><a href="javascript:window.location=locationAfterPreload">)
// -->
</script>
</body>
</html>
Testa detta:
<script type="text/javascript">
<!--
window.onload = function() {
<%
Dim bildmapp : bildmapp="images/" 'Din mapp med dina bilder
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Server.Mappath(bildmapp))
set Files = Folder.Files
For each Item In Files
Select Case LCase(Right(Item.Name, 3))
Case "jpg", "gif", "bmp", "png" 'Kollar att det är bilder
myImages = myimages & """"& bildmapp & Item.Name &""","
end select
Next
Set FSO = nothing
myImages = left(myImages , len(myImages) - 1) 'Tar bort sista kommatecknet för att inte få javascriptfel
Response.Write "preloadImages("& myImages &");"& vbcr 'Skriver ut det hela
%>
};
function preloadImages() {
for (var i = 0; i < arguments.length; i++)
document.createElement("img").src = arguments[i];
}
//-->
</script>
JesperT, om man vill ha med en progressbar, hur kan koden se ut då?
Så här kanske:
<script type="text/javascript">
<!--
window.onload = function() {
<%
Dim bildmapp : bildmapp="images/" 'Din mapp med dina bilder
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Server.Mappath(bildmapp))
set Files = Folder.Files
For each Item In Files
Select Case LCase(Right(Item.Name, 3)) 'Kollar att det är bilder
case "bmp","jpg","gif","png"
myImages = myimages & """"& bildmapp & Item.Name &""","
end select
Next
Set FSO = nothing
myImages = left(myImages , len(myImages) - 1) 'Tar bort sista kommatecknet för att inte få javascriptfel
Response.Write "preloadImages("& myImages &");"& vbcr 'Skriver ut det hela
%>};
function preloadImages() {
for (var i = 0; i < arguments.length; i++)
document.images["progressbar"].style.width=i * parseInt(150/arguments.length) +"px";
document.createElement("img").src = arguments[i];
}
//-->
</script>
<img src="progress.gif" height="10px" style="border:1px solid black;" name="progressbar">
Bahhh, den kanske inte var så bra.
Här har du en länk att knåpa ihop ngt. med.
http://scriptasylum.com/misc/progressbar/progressbar.html
Response.Write "var imagenames=["& myImages &"];"& vbcr 'Skriver ut det hela
Det här ser ut att fungera men bilderna preloadas inte? En sa att createElement inte är standard utan att man ska använda av sig array, och lägga till (new Image()).src="..."; vad menas?
Sen så skulle det vara trevligt med siffror som räknar upp till 100% och då ska det inte vara så att det hoppar från 1 till 55 utan det räknar snabbt som 1 2 3 4 5 6 7 8 till 55 om någon har 10mbit tex.
Sidan ska redirecta också efteråt
<html>
<head>
</head>
<body>
<script type="text/javascript">
<!--
window.onload = function() {
<%
Dim bildmapp : bildmapp="photo/" 'Din mapp med dina bilder
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Server.Mappath(bildmapp))
set Files = Folder.Files
For each Item In Files
Select Case LCase(Right(Item.Name, 3)) 'Kollar att det är bilder
case "bmp","jpg","gif","png"
myImages = myimages & """"& bildmapp & Item.Name &""","
end select
Next
Set FSO = nothing
myImages = left(myImages , len(myImages) - 1) 'Tar bort sista kommatecknet för att inte få javascriptfel
Response.Write "preloadImages("& myImages &");"& vbcr 'Skriver ut det hela
%>};
function preloadImages() {
for (var i = 0; i < arguments.length; i++)
document.images["progressbar"].style.width=parseInt(100*i/arguments.length) +"px";
document.createElement("img").src = arguments[i];
}
//-->
</script>
<img src="progress.gif" height="10px" style="border:1px solid black;" name="progressbar">
<body>
</html>
<script type="text/javascript">
<!--
<%
Dim bildmapp : bildmapp="photo/" 'Din mapp med dina bilder
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Server.Mappath(bildmapp))
set Files = Folder.Files
For each Item In Files
Select Case LCase(Right(Item.Name, 3)) 'Kollar att det är bilder
case "bmp","jpg","gif","png"
myImages = myimages & """"& bildmapp & Item.Name &""","
end select
Next
Set FSO = nothing
myImages = left(myImages , len(myImages) - 1) 'Tar bort sista kommatecknet för att inte få javascriptfel
Response.Write "var imagesSrc=["& myImages &"];"& vbcr 'Skriver ut det hela
%>
var imagesOnLoad="document.getElementById('status1').innerHTML='Laddar bilder, '+parseInt(images.loaded/images.toload*100)+'% klart.'";
var imagesOnAllLoaded="document.getElementById('status2').innerHTML='Alla bilder laddade på '+images.loadtime/1000+'s.';setTimeout('window.open(\"http://www.sl.se\",\"_self\")',1500)";
var images=new Object();
images.loaded=0;
images.starttime=new Date();
images.toload=imagesSrc.length;
for(i in imagesSrc){
images[i]=new Image();
images[i].onload=function(){
images.loaded++;
document.getElementById("progressbar").style.width=images.loaded * parseInt(150/imagesSrc.length) +"px";
if(imagesOnLoad.length>0){ eval(imagesOnLoad); }
if(images.loaded==images.toload&&imagesOnAllLoaded.length>0){
images.stoptime=new Date();
images.loadtime=images.stoptime.getTime()-images.starttime.getTime();
eval(imagesOnAllLoaded);
}
}
images[i].src=imagesSrc[i];
}
//-->
</script>
<div style="height:10px;width:150px;border:1px solid black;padding:0;margin:0;"><div style="background:blue;width:2px;height:5px;" id="progressbar"></div></div>
<div id="status1"></div>
<div id="status2"></div>
Tack till jojoxx!
Det där verkar inte fungera heller? ( http://www.mongo.nu/portfolio/preloader.asp )
Hmm, fungerar det för dig?
Du har trollat bort ett \ efter index.asp där sidan skall redirectas.
setTimeout('window.open(\"index.asp[b]\[/b]",\"_self\")',1500)";
Förresten har en fråga till hihi
Nu har man det här javascriptet
<script language=\"javascript\" type=\"text/javascript\" src=\"js/mozInnerHTML.js\"></script>
<!-- Använder sig av mozInnerHTML från http://webfx.eae.net/ -->
<script language="javascript" type="text/javascript" src="js/dtdfade.js"></script>
<script language="javascript" type="text/javascript">
<!--
picArray = new Array("fader_pic_adresser_ver2.gif", "fader_pic_vitklass.gif", "fader_pic_vi_har.gif");
linkArray = new Array("http://mattiasnordin.net", "http://mattiasnordin.net", "http://mattiasnordin.net");
createSlideShow( linkArray, "_blank", picArray, "http://mattiasnordin.net/ju-jutsu/designen/", 420, 110, 1500, 1000, 2);
/*
Parametrar:
--></script>
Kan man ersätta picArray = new Array("fader_pic_adresser_ver2.gif", "fader_pic_vitklass.gif", "fader_pic_vi_har.gif");
linkArray = new Array("http://mattiasnordin.net", "http://mattiasnordin.net", "http://mattiasnordin.net");
createSlideShow( linkArray, "_blank", picArray, "http://mattiasnordin.net/ju-jutsu/designen/", 420, 110, 1500, 1000, 2);
mot någonting som tar alla bilder från en mapp, så man bara behöver uploada bilden i mappen för att den ska komma upp och visas.
Ja visst. Använd samma princip som förut.
Byt ut:
Response.Write "var imagesSrc=["& myImages &"];"& vbcr
mot:
Response.Write "picArray = new Array("& myImages &");"& vbcr
Lagt in men hur behåller man javascriptseffekten? Det är ett fadescript..
<script language=\"javascript\" type=\"text/javascript\" src=\"js/mozInnerHTML.js\"></script>
<!-- Använder sig av mozInnerHTML från [url]http://webfx.eae.net/[/url] -->
<script language="javascript" type="text/javascript" src="js/dtdfade.js"></script>
<%
Dim bildmapp : bildmapp="photo/" 'Din mapp med dina bilder
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(Server.Mappath(bildmapp))
set Files = Folder.Files
For each Item In Files
Select Case LCase(Right(Item.Name, 3)) 'Kollar att det är bilder
case "bmp","jpg","gif","png"
myImages = myimages & """"& bildmapp & Item.Name &""","
end select
Next
Set FSO = nothing
myImages = left(myImages , len(myImages) - 1) 'Tar bort sista kommatecknet för att inte få javascriptfel
Response.Write "picArray = new Array("& myImages &");"& vbcr 'Skriver ut det hela
%>
/*
Parametrar:
1) Array med länkar
2) target. ("_blank" för nytt fönster)
3) Array med bilder
4) Basadress till bilderna. Alt. lämna denna tom ("") och använd
full adress för parameter 3
5) Bredd
6) Höjd
7) Hur länge varje bild ska visas (millisekunder)
8) Hur lång tid en övergång ska ta
9) Hur många bilder som ska förladdas innan övergångarna börjar
(Första bilden visas fram till dess)
*/
--></script>
Föreslår att du klipper ut det som du får i källkoden och fortsätter ditt inlägg i javascriptforumet eftersom att det nu är en javascriptfråga.
Hehe okej, postade just ett inlägg där. Tack så mycket för hjälpen. Det där har man nog stor nytta av Speciellt om man vill ha nya bilder varje gång.
Men förresten när javascriptsproblemet är löst och att man ska kunna klicka på next / back så undrar jag om det är i namnordning dom går efter varandra?
Ja, filerna skall listas i bokstavsordning.