Avatar billede __ak Nybegynder
13. maj 2008 - 15:56 Der er 23 kommentarer og
3 løsninger

appendChild IE image load

Hejsa allesammen

Jeg har en PHP fil der skal sættes ind som et billede på en side, det virker også fint nok i Firefox, men i Internet Explorer virker det som om filen ikke bliver loadet rigtigt, den udfører ikke scriptet som ligger i filen.

Jeg bruger document.createElement til at oprette billedet og appendChild til at sætte det ind på siden.

Kan der være noget med at billedet ikke bliver loadet ordenligt når det sættes ind i IE.

//__ak
Avatar billede jokkejensen Novice
13. maj 2008 - 16:02 #1
Tror det vil hjælpe voldsomt hvis du postede lidt kode..

/J
Avatar billede __ak Nybegynder
13. maj 2008 - 16:04 #2
Jeg kan desværre ikke poste noget kode da det er et lukket system.
Mit spørgsmål går også bare mere ud på om der er nogle kendte problemer med den slags i IE.
Avatar billede w13 Novice
13. maj 2008 - 16:11 #3
Hvis du har glemt at skrive noget, som du burde, eller har fået skrevet noget som du ikke burde. :)

Som Jokkejensen siger, kan vi ikke rigtig hjælpe uden kodeeksempler.
Har du heller ikke mulighed for bare at gi' os den bid, som nok indeholder fejlen?
Det kan sagtens lade sig gøre at lave crossbrowser i hvert fald.
Avatar billede w13 Novice
13. maj 2008 - 16:13 #4
Du kan også prøve - hvis billedet f.eks. har id="test" - at alerte:

alert(document.getElementById("test").outerHTML);

i Internet Explorer.

Du kan f.eks. bare gå op i adresselinjen og indsætte:
java script:alert(document.getElementById("test").outerHTML);void(0)
og trykke enter. Så skulle du gerne se, hvad der i virkeligheden er blevet indsat.
Avatar billede __ak Nybegynder
13. maj 2008 - 16:29 #5
Hvis jeg alerter billedet med inline js så får jeg den rigtige kode til billedet, som jeg også kan se i generated source at det bliver indsat rigtigt.
Avatar billede jokkejensen Novice
13. maj 2008 - 16:31 #6
du må i det mindste kunne smide den js genererede kode til os.

Så kan vi da se om der er noget galt med det img tag.

/JJ
Avatar billede __ak Nybegynder
13. maj 2008 - 16:35 #7
Her er image tag'et.
Dog er stien ændret, da det som sagt er et lukket system.

<IMG style="WIDTH: 0px; HEIGHT: 0px" height="0" src="http://domain.com/file.php?var=value&var2=value2&var3=value3" width="0" />
Det er den genererede source fra IE.^^

Kontra den genererede source fra FF.
<img style="width: 0px; height: 0px;" src="http://domain.com/file.php?var=value&var2=value2&var3=value3">
Avatar billede jokkejensen Novice
13. maj 2008 - 16:45 #8
ahhh du sender nok billedet med forkert mimetype fra file.php ... brug fiddler til at teste ..

husk at xhtml tags skal være lowercase.
Avatar billede jokkejensen Novice
13. maj 2008 - 16:46 #9
hvorfor width: 0px; og height:0px ?

det kan være IE fjerner billedet pga det ?
Avatar billede w13 Novice
13. maj 2008 - 17:27 #10
Ja, som jokkejensen foreslår, så prøv at sætte width og height og undersøg, om det så bliver kørt. Du kan jo også skjule det med display:none eller visibility:hidden i stedet.
Avatar billede olebole Juniormester
14. maj 2008 - 00:25 #11
<ole>

jokkejensen >> inner- og outerHTML i IE returnerer altid tags i uppercase. Det samme gælder tagName property'en

/mvh
</bole>
Avatar billede __ak Nybegynder
14. maj 2008 - 08:41 #12
jokkejensen: Jeg har prøvet at sætte billedet op i størrelse, der skete ikke nogen ændring.

Jeg tror muligt at problemet kan ligge i at jeg attacher funktionen der opretter billedet til window.onload via attachEvent/addEventListener.
Kan det være noget med at IE ikke loader billedet ordentligt ind efter DOM'en er loadet færdig?
Avatar billede __ak Nybegynder
14. maj 2008 - 09:15 #13
Altså min kode ser nogenlunde sådan her ud:

if(window.addEventListener) {
    window.addEventListener('load', function(){setTimeout('myFunction();', 1000);}, false);
} else {
    window.attachEvent('onload', function(){setTimeout('myFunction();', 1000);});
}

Hvor myFunction() er den der opretter billedet via document.createElement og derefter appender det til et div via appendChild.
Avatar billede jokkejensen Novice
14. maj 2008 - 10:04 #14
Ole > ok, tænkte ikke lige de var derfra men vidste heller ikke.

Jeg tror din file.php er problemet.

Kan du sende url til et billede, og kan du evt requeste billedet ALENE i internet explore

http://domain.com/file.php?var=value&var2=value2&var3=value3

Skulle jo gerne vise et billede, gør det ikke, er det bestemt mimetypen der for browseren er ukendt, hvis den vil downloade er det helt galt :)
Avatar billede __ak Nybegynder
14. maj 2008 - 14:07 #15
Kalder jeg filen direkte i internet explorer virker den fint nok.
Og det hele virker fint i Firefox - både når jeg kalder den direkte og via mit script.
Avatar billede jokkejensen Novice
14. maj 2008 - 14:12 #16
function myFunction(divet, urladressentilbillede)
{
document.getElementById(divet).innerHTML = "<img src'"+urladressentilbillede+"'" alt="" />";
}
Avatar billede jokkejensen Novice
14. maj 2008 - 14:12 #17
how
document.getElementById(divet).innerHTML = "<img src'"+urladressentilbillede+"' alt='' />";
Avatar billede jokkejensen Novice
14. maj 2008 - 14:12 #18
grr
document.getElementById(divet).innerHTML = "<img src='"+urladressentilbillede+"' alt='' />";
Avatar billede olebole Juniormester
14. maj 2008 - 15:41 #19
Hvis det ikke virker med DOM, virker det heller ikke med innerHTML ... ellers er der i hvertfald noget helt andet, der skal ændres  =)

function myFunction(divet, urladressentilbillede) {
    var oImg = document.createElement("img");
    document.getElementById(divet).appendChild(oImg);
    oImg.setAttribute("src", urladressentilbillede);
}

Hvis det ikke virker, tror jeg, det må være på tide, du viser hele din præcise kode. Ellers bliver det vist bare en lang quiz.
Én ting er i hvertfald helt sikkert: Hvis det, jeg viser ovenfor, ikke virker, så laver du fejl andre steder  =)
Avatar billede __ak Nybegynder
15. maj 2008 - 09:06 #20
Jeg har fundet ud af det.
Problemet var at IE cachede billedet der blev loadet ind, så det kun blev loadet rigtigt første gange man så det, og ikke de efterfølgende gange hvor man opdaterede siden.
Så tilføjede en Math.random() til linket, og nu virker det.
Mange tak for hjælpen!

Hvis i alle tre lægger et svar får i nogle points som tak for jeres tid.

//__ak
Avatar billede jokkejensen Novice
15. maj 2008 - 09:23 #21
Det er en forkert løsning.

Du skal sætte client-cache når du sender den file gennem file.php. Den skal stå til public. Aner ikke hvordan i php. Men nu tvinger du folk til at downloade billederne ved hvert request.

Vh.
Avatar billede w13 Novice
15. maj 2008 - 09:26 #22
:)
Avatar billede __ak Nybegynder
15. maj 2008 - 11:59 #23
Hvis der er nogen der kan komme med den rigtige php header vil det være rart, men indtil videre holder jeg mig til min nuværende løsning :-)

( venter lige på ole og jokke svarer )
Avatar billede jokkejensen Novice
15. maj 2008 - 12:15 #24
Avatar billede __ak Nybegynder
17. maj 2008 - 12:49 #25
Så er det ved at være sidste chance hvis du vil have lidt points som tak for hjælpen ole..x
Avatar billede __ak Nybegynder
27. maj 2008 - 13:55 #26
Tak for hjælpen i hvertfald :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester