Ik ben op dit moment bezig met een website waarbij de content 99% d.m.v. javascript (ajax) wordt gegenereerd.
Eén van de onderdelen zijn de afbeeldingen die, voordat ze getoond worden, met canvas worden bewerkt.
Het probleem wat ik nu heb is dat de afbeeldingen (nog) niet geladen zijn op het moment dat de functie voor de canvas bewerking wordt aangeroepen, wat uitkomt tot errors.
Nu probeer ik direct nadat ik weet welke afbeeldingen er getoond moeten worden deze direct te laden met
Helaas zijn er teveel afbeeldingen en te grote afbeeldingen om deze manier te gebruiken (of Javascript is te snel), dus heb ik een aantal andere technieken opgezocht voor het laden van afbeeldingen. Helaas werkt er geen een, omdat er onmogelijk lijkt om te zien of een afbeelding ook daadwerkelijk geladen is.
Aantal script die ik heb geprobeerd:
Deze twee scripts werken beide niet omdat loadCount niet of te vroeg op 0 komt, waardoor de canvas functie crashed...
Ook de "fix" die te vinden in de documentatie van jQuery zelf werkt niet.
Kan iemand een goede oplossing verzinnen? Of in ieder geval in de goede richting helpen?
Wanneer er nog vragen zijn m.b.t. het script kan ik die uiteraard beantwoorden, ik kan/mag helaas geen link geven van de site (zowel van Tnet als van klant). Maar mijn uitleg zou voldoende moeten zijn.
Eén van de onderdelen zijn de afbeeldingen die, voordat ze getoond worden, met canvas worden bewerkt.
Het probleem wat ik nu heb is dat de afbeeldingen (nog) niet geladen zijn op het moment dat de functie voor de canvas bewerking wordt aangeroepen, wat uitkomt tot errors.
Nu probeer ik direct nadat ik weet welke afbeeldingen er getoond moeten worden deze direct te laden met
JavaScript:
1
2
3
4
5
| // images is een array met uri's van de afbeeldingen $.each(images, function(i, image) { var img = new Image(); img.src = image; }); |
Helaas zijn er teveel afbeeldingen en te grote afbeeldingen om deze manier te gebruiken (of Javascript is te snel), dus heb ik een aantal andere technieken opgezocht voor het laden van afbeeldingen. Helaas werkt er geen een, omdat er onmogelijk lijkt om te zien of een afbeelding ook daadwerkelijk geladen is.
Aantal script die ik heb geprobeerd:
JavaScript:
1
2
3
4
5
6
7
8
9
10
| // tweede poging // images is een jQuery object met alle afbeeldingen in DOM var loadCount = images.length; if(loadCount > 0) { images.load(function() { if(0 === --loadCount) { // voer canvas functie uit } }); } |
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
| // derde poging // images is een jQuery object met alle afbeeldingen in DOM var loadCount = images.length; if(loadCount > 0) { $.each(images, function(i, image) { $(image).load(function() { if(0 === --loadCount) { // voer canvas functie uit } }); } } |
Deze twee scripts werken beide niet omdat loadCount niet of te vroeg op 0 komt, waardoor de canvas functie crashed...
Ook de "fix" die te vinden in de documentatie van jQuery zelf werkt niet.
Kan iemand een goede oplossing verzinnen? Of in ieder geval in de goede richting helpen?
Wanneer er nog vragen zijn m.b.t. het script kan ik die uiteraard beantwoorden, ik kan/mag helaas geen link geven van de site (zowel van Tnet als van klant). Maar mijn uitleg zou voldoende moeten zijn.