Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Image laden, nur wenn noch nicht geladen

Mitglied: Power-Poler

Power-Poler (Level 1) - Jetzt verbinden

17.02.2017, aktualisiert 18:43 Uhr, 912 Aufrufe, 1 Kommentar

Abend,
Bräuchte mal einen kleinen Denkanstoß. Stehe etwas auf dem Schlauch.
Ich versuche mich gerade in canvas einzuarbeiten, und würde da gerne eine function schreiben, die dann die Images lädt, aufpasst, das diese auch wirklich geladen werden, nur lädt wenn noch nicht geladen, und anschließend verwaltet.

Hab da bereits was geschrieben (ich habe inzwischen gemerkt, das das mit dem onload an dieser stelle quatsch ist, ich lasse es aber mal noch drin, weil so in etwa wollte ich es umsetzen.

01.
var imgarray = new Array();
02.
function loadimg(src){
03.
	var pos;
04.
	if((pos = imgisload(src)) || pos === 0 ) {console.log(pos); return pos;} // Liefert die Position im Array wenn vorhanden
05.
	else{
06.
		var temp = document.createElement('img'); //erzeugt das Bild, wenn nicht vorhanden
07.
		temp.src=src;	//lädt das Bild (sollte)
08.
	}
09.
	temp.onload = function(){ //Wenn das Bild erfolgreich geladen wurde (ja an dieser stelle Käse)
10.
		imgarray.push(temp);
11.
		console.log(imgarray[imgarray.length-1]);
12.
		return imgarray.length-1;
13.
	}
14.
	temp.onerror = function(){ ((Falls das Bild doch nicht geladen werden konnte
15.
		console.log("ERROR onLoad");
16.
		return false;
17.
	}
18.
}
19.

20.
function imgisload(imgsearch){ //Überprüft ob das Bild bereits im Array ist.
21.
	for(var i = 0; i<imgarray.length; i++){
22.
		if(imgarray[i].outerHTML.indexOf(imgsearch) != -1){ console.log(i);return i;}
23.
	}
24.
	return false;
25.
}
26.
	console.log(loadimg("Images/Wald.gif")); //return undefined (logisch)
27.
	window.setTimeout(function (){console.log(loadimg("Images/Wald.gif"))}, 1000); //return 0, da Bild bereits im Array an position 0
28.
	console.log(loadimg("Images/Wald2.gif")); //return undedined (Wald2 nicht existent, zum Test des onerror)
29.
Wie könnte ich dies umsetzen, sodass das mit Bild bereits in Array funktioniert, auch wenn 2 mal das gleiche Bild hintereinander geladen wird, also das laden des ersten noch nicht abgeschlossen?
Wie könnte ich denn Rückgabe wert bestimmen?

Dachte an eine Warteschlange, aber ich komme gerade nicht drauf, wie ich da ansetzen könnte.

Danke schon mal für eine Antwort
Mfg
Power-Poler
Mitglied: Power-Poler
19.02.2017 um 16:05 Uhr
01.
var imgarray = new Array();
02.
function loadimg(src){
03.
	var pos;
04.
	if((pos = imgisload(src)) || pos === 0 ) {return imgarray[pos];}
05.
	else{
06.
		var temp = document.createElement('img');
07.
		temp.alt = src;
08.
		temp.src = src;
09.
		imgarray.push(temp);
10.
		temp.onload = function(){
11.
			imgarray[imgisload(src)].error = false;
12.
			};
13.
		temp.onerror = function(){
14.
			imgarray[imgisload(src)].error = true;		
15.
		};
16.
		return imgarray[imgarray.length -1];
17.
	}
18.
}
19.

20.
function imgisload(imgsearch){
21.
	for(var i = 0; i<imgarray.length; i++){
22.
		if(imgarray[i].alt == imgsearch) return i;
23.
	}
24.
	return false;
25.
}
Werde es mal so versuchen. Bin mir nur gerade unsicher. Die Error Eigenschaft hat ein img ja normalerweise nicht. Kann ich das wirklich so machen (Hab mal keinen Fehler im Firefox bekommen) oder könnte das irgendwann ganz bös schief gehen?.
Hätte es ja gerne über "complete" gemacht, nur der Firefox hat hier die großartige Angewohnheit true zurück zu liefern, egal was mit dem Bild ist...
Bitte warten ..
Neue Wissensbeiträge
Firewall
Übernahme von SOPHOS durch Thoma Bravo
Information von Dilbert-MD vor 5 StundenFirewall1 Kommentar

Kam die Tage per Newsletter: Zitat: " Das Sophos Board of Directors hat gestern bekanntgegeben, dass die Private-Equity-Investment-Firma Thoma ...

Windows Netzwerk

Ereignis-ID 20226 RasClient Ursachencode 829 VPN Verbindung wird abgebrochen

Anleitung von Hardstyles vor 6 TagenWindows Netzwerk

Hallo zusammen, nach Stundenlanger Analysen und test konnten wir den Fehler Lösen. es geht um folgende Fehler Meldung in ...

Windows 10

Windows 10 Version 1903: Update KB4522015 blockt VMware Workstation

Information von kgborn vor 9 TagenWindows 10

Nur eine kurze Information für Leute, die schon Windows 10 Version 1903 in Betrieb haben und dort VMware Workstation ...

VB for Applications

Fritzbox Telefonbuch - XML-Importdatei aus Excel erstellen

Tipp von PeterleB vor 10 TagenVB for Applications1 Kommentar

Das Thema geistert schon seit Jahren durch verschiedene Foren. Habe mich jetzt mal damit etwas intensiver befasst und hoffe, ...

Heiß diskutierte Inhalte
Switche und Hubs
24 Rasperry PI vernetzen, was nimmt man da?
gelöst Frage von clkdivSwitche und Hubs25 Kommentare

Hallo, ich möchte 24 Raspberries vernetzen. Bis jetzt waren es 4 Stück, ich habe dafür einen cheap-o-cheap Edimax-Hub benutzt, ...

LAN, WAN, Wireless
Hausnetzwerk mit Routern
Frage von perhaps-labs.comLAN, WAN, Wireless22 Kommentare

Hallo an Alle, ich habe ein Riesenhaus erworben und möchte nun überall ein Netzwerk dafür installieren. Das Haus hat ...

E-Mail
Optionen des Mails-Empfangs
Frage von SchauerE-Mail19 Kommentare

Hallo an Alle. ich habe die Aufgabe bekommen zu recherchieren, welche Optionen sich anbieten Mails zu empfangen. Klingt banal, ...

Firewall
Welche Anbieter, Geräte und Programme gelten als sicher?
Frage von NordicMikeFirewall16 Kommentare

Moin zusammen, wenn man sich die vielen Sicherheitslösungungen ansieht, erkenn man nicht, auf was man sich einlassen würde. Man ...