Toon posts:

[JS] Image loading in Safari

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een pagina waarin ik een afbeelding probeer te laden door middel van JavaScript.
Dus in mijn code staat ergens
code:
1
var oImage = new Image;
en iets verderop geef ik een url op op de volgende manier:
code:
1
oImage.src = image;


Nu gaat dit goed in Opera en Firefox, maar niet in safari.

De inhoud van de variabele image is in alle gevallen waar ik mee getest heb "/fotos/Wallpapers/medium/0049.jpg".
Maar als ik na het toewijzen van dat pad aan het image object oImage.src weer opvraag, verschilt dat per browser.

Opera en Firefox maken er netjes
code:
1
http://mydomain.com/fotos/Wallpapers/medium/0049.jpg
van, terwijl Safari beweert dat het
code:
1
http://mydomain.com/testcase/Slideshow//fotos/Wallpapers/medium/0049.jpg
is. (/testcase/Slideshow/ is de map waarin het javascript/html bestand staat...)

Overigens heb ik ook al geprobeerd in plaats van die eerste / in de image variabele ../../ neer te zetten, maar dat mocht ook niet baten.

Iemand een idee wat dit kan veroorzaken, en wat ik er aan zou kunnen doen?

  • DannyCLD
  • Registratie: Oktober 2002
  • Laatst online: 21-09-2021
*schop*

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
ik zou zo zelfs zeggen dat safari dit dan goed doet, aangezien jij een relatieve url opgeeft moet deze door de browser (aangenomen dat je geen base href hebt ingevult) worden geinterpreteerd als "vanuit de directory waar de pagina draait"

Maar wat let je om een base href in te stellen? hoewel somige browsers hier en daar wat bugs met dat ding hebben zou het zo kunnen dat het in dit geval wel je probleem oplost.

This message was sent on 100% recyclable electrons.


Verwijderd

safari is webkit als ik me niet vergis, kan je anders niet kijken of de browser webkit is, indien ja, dan pas je het pad aan.
appCodeName
Mozilla
appName
Netscape
appVersion
5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3
cookieEnabled
true
platform
Win32
userAgent
Mozilla/5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3
Dit krijg ik terug van navigator eigenschappen in safari

  • DannyCLD
  • Registratie: Oktober 2002
  • Laatst online: 21-09-2021
BasieP schreef op woensdag 04 juli 2007 @ 15:02:
Maar wat let je om een base href in te stellen?
Safari maakt ook van een base href:
code:
1
http://mydomain.com/testcase/Slideshow/http://mydomain.com/fotos/Wallpapers/medium/0049.jpg

Dus dat lijkt niet geheel te werken.
Verwijderd schreef op woensdag 04 juli 2007 @ 15:03:
safari is webkit als ik me niet vergis, kan je anders niet kijken of de browser webkit is, indien ja, dan pas je het pad aan.


[...]


Dit krijg ik terug van navigator eigenschappen in safari
Dit probleem van safari krijg ik zowel op de mac verzie als op de windows verzie.
Ik weet niet precies waar je kan zien of de browser webkit is, maar ik denk dat ik het zelfde resultaat zou krijgen als jij.

  • Fibbers
  • Registratie: Augustus 2004
  • Laatst online: 31-07-2021
Alhoewel ik wel benieuwd ben wat hier aan de hand is en hoe je't moet oplossen is een goede workaround denk ik gewoon dit:

JavaScript:
1
oImage.src = location.hostname + image;


hmm, misschien dat je hier zelfs van moet maken:
JavaScript:
1
oImage.src = 'http://' + location.hostname + image;


Of misschien dat je 'location.host' moet gebruiken, ik denk uiteindelijk dat dit zeker wel moet werken :):
JavaScript:
1
oImage.src = 'http://' + (location.hostname || location.host) + image;

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Het probleem is dat IE, Firefox en Opera inderdaad de html pagina als basis gebruiken bij een relatieve, terwijl khtml (Safari + Konqueror) de locatie van het script als basis gebruiken. Helaas is dat nooit duidelijk door het W3C en/of ECMA beschreven.

Echter gebruik je geen relatief , maar een absoluut path (/foto) dus zou de locatie waar de pagina of script niet uitmaken, want de locatie is altijd hostname + path.

De oplossing van Fibbers zou in principe werken ,alleen zou ik 'http://' vervangen door
code:
1
oImage.src = location.protocol + '//' + (location......

zodat het script ook nog op een SSL beveiligde website werkt.

If it isn't broken, fix it until it is..


  • DannyCLD
  • Registratie: Oktober 2002
  • Laatst online: 21-09-2021
ja !
dankjullie wel,
dit lijkt inderdaad te werken :)

code:
1
oImage.src = location.protocol + '//' + (location.hostname || location.host) + image;
Pagina: 1