&PHP: Bilder dynamisch nachladen
NicePrice
- javascript
Hi
Ich habe eine ausgabe von Dateien in einem ordner.
Ich würde gerne eine schnellansicht haben bei der ich mit dem mauszeiger über den link fahren kann und dann ein layer aufgeht in dem die datei stark verkleinert zu sehen ist.
Ich weiss nicht ganz wie ich das angehen müsste. Ich kann ja den pfad der datei ohne probleme übergeben aber ich möchte natürlich verhindern dass er alle bilder zu beginn irgendwo schon in einen layer läd, das wäre ja grausam von der ladezeit.
Kann ich das irgendwie machen dass ich nen Iframe in den layer lege und in dem dann bei onclick er die datei im iframe mit 100x(variable breite) läd?
Aber wie steuer ich das über javascript an?
ciao
Moin,
Aber wie steuer ich das über javascript an?
http://de.selfhtml.org/javascript/objekte/images.htm#src das Beilspiel ist fast perfekt für Dein Vorhaben. Fast - deshalb, weil die Bilder im Beispiel vorgeladen werden. Dies geschieht Durch folgende Part:
var b = new Array();
b[0] = new Image(); b[0].src = "holger.gif";
b[1] = new Image(); b[1].src = "hilmar.gif";
b[2] = new Image(); b[2].src = "heiner.gif";
b[3] = new Image(); b[3].src = "hans.gif";
Also ist nur folgender Teil für Dich interessant, der Dir zeigt, man kann innerhalb einen Dokuments einem <img>-Tag via JavaScript eine neue Source (src) zuweisen:
document.images[0].src = b[i].src
// also für Dich dann soetwas:
document.images[0].src = 'keineBilder/004.gif';
Eines Iframes bedarf es also nicht einmal ;)
Gruß aus Berlin!
eddi
Hi
Danke... das hat schonmal sehr gut funktioniert... =)
Aber ich habe noch eine frage:
er läd jetzt immer ein neues bild wenn ich über eines fahre.
Das problem ist dass es etwas dauert bis er das neue bild läd und auch bis er anfängt zu laden (wg. verbindungsaufbau denke ich).
Ich würde gerne etwas schreiben im sinne von:
1. Setze globale variabel
2. Globale Variabel ist aktueller dateiname (der für das anzuzeigende bild)
jetzt fährt der user über neues bild und aktiviert die funktion neu
3. If Globale Variabel != aktuellem Filenamen DANN
> setze neue Globale Variabel = neuen dateinamen
> setze den bg des layers auf das bild "loading.gif" (einfache ladehinweis-grafik)
Kann man das so machen oder ist da ein denk- bzw. "leichter wäre eso so.."-fehler drin?
Ich las weiter unten schon vor einigen tagen das thread über das abfragen eines lade´zustands eines bild, doch verstehe ich das nicht ganz.
hilfe?
ciao
Re:
Du solltest meiner bescheidenen Ansicht nach ersteinmal alle URLs der potentiell zu ladenden Bilder in einem Objekt ablegen:
<script type="text/javascript">
var a=new array();
<?php
$c=0;
$d='pfad/zu/Deinen/grossen/bildern/';
$dir(opendir($d);
while(($f=readdir($dir))!=false)
if(!is_dir($d.$f) && (($v=substr($f,-4))=='.gif' || $v=='.jpg' || $v=='.png'))
{
echo 'a['.$c.']'=$f.";\n";
$c++;
}
closedir($dir);
echo 'var p='.$d.";\n";
?>
// Danach kannst Du Dir eine Funktion schreiben, die alles macht,
// was Dir beliebt. Dabei ist es hilfreich zu wissen, daß einem
// Image in einem Dokument per CSS eine Hintergrundgrafik zugewie-
// sen werden kann, das bei einer Trasparenten Grafik sichtbar
// wird...
</script>
Gruß aus Berlin!
eddi