• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Bild per Ajax laden (oder andere alternativ Lösung)

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
hier erstmal mein Code bis jetzt
Code:
var Bild;
function loadImage(string){ //string: Adresse zum Bild
	document.getElementById('Drehteil').style.visibility='visible'; //so ein Ladeteil eben
	var reqLoadPic=new XMLHttpRequest();
	reqLoadPic.open('POST',string,true);
	reqLoadPic.send(null);
	reqLoadPic.onreadystatechange=function(){
		if(reqLoadPic.readystate=4){
			document.getElementById('Bild').src=string;
			Bild=string;
			document.getElementById('Drehteil').style.visibility='hidden';
		}
	}
}

An sich funktioniert da alles, das ding ist nur, dass er schon im readystate 4 ist, bevor das Bild richtig gecached wurde. Also mein Grundgedanke war, dass durch die Ajax Funktion das Bild im Hintergrund erstmal gecahed wird und dass danach einfach die src vom img-tag verändert wird (habe schon auf anderen Seiten mit caching gearbeitet, waren dort aber nur Bilder von wenigen kb, somit kann man auch schon beim Aufbau der Seite cachen, hier aber sind die Bilder 0,5-1,5MB groß und ich denke, dass dann ein gesamtes cachen nicht in Frage kommt. Das einzige Problem an dieser Variante hier ist, dass die Funktion für readystate=4 viel zu früh aufgerufen wird.
Kann mir jemand sagen, woran das liegt oder ob ich einen generellen Denkfehler hier drinnen habe. gut wäre auch eine alternative Lösung, da ich ja nur das Ladedings da angezeigt haben will, solange das neue Bild noch nicht geladen wird.

Danke
 

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Du musst wenn dann schon die von Ajax empfangenen Daten weiterverarbeiten, sonst geht denke ich nicht. Da ich sowas schon einige Zeit nicht mehr gemacht habe, kann ich dir jetzt keinen genauen Code geben.

Allerdings denke ich, das das ganze Unternehmen recht sinnlos ist.
Ich würde das Bild einfach als "Nachlade-Jepg" speichern (ich glaube das war die Einstellung progressiv, ich kann mich aber auch täuschen...). Sprich, das Bild wird schon bald in schlechterer (verpixelter) Quali angezeigt, während der Rest des Bildes noch geladen wird Das Bild wird dann immer schärfer.