Partamos de una página web que se encuentra formada por los siguientes archivos:
index.html
img/
js/encabezado.js
autor/yo.html
El código javascript sirve para crear encabezados aleatorios a partir de cinco imágenes situadas en la carpeta de img.
Código Javascript:
Ver original
function VecImagenes() { n=0; this[n++]="img/encabezado01.jpg"; this[n++]="img/encabezado02.jpg"; this[n++]="img/encabezado03.jpg"; this[n++]="img/encabezado04.jpg"; this[n++]="img/encabezado05.jpg"; this.N=n; } var Imagenes=new VecImagenes(); src= Imagenes[ Math.floor(Math.random() * Imagenes.N) ] ; document.write("<img src="+src+">");
Dicho código se encuentra enlazado tanto en index.html como en yo.html.
Para el index.html aplico el código:
Código Javascript:
Ver original
<script type="text/javascript" src="js/encabezado.js"></script>
El código se ejecuta sin problemas y me salen mis imágenes. Sin embargo, para el yo.html situado en la carpeta autor, no consigo que me salga.
Lo primero que hago es enlazar el js mediante el siguiente código:
Código Javascript:
Ver original
<script type="text/javascript" src="../js/encabezado.js"></script>
El código se llega a ejecutar, pero me dice que las imágenes no se encuentran en el servidor. Mirando la url de carga, me sale que está intentando enlazar a la dirección:
Código URL:
Ver original
autor/img/encabezado0X.jpg
en vez de ir a:
Código URL:
Ver original
img/encabezado0X.jpg
como antes, por lo que al no encontrarse el archivo allí, pues no se carga.
Pensaba que el flujo de trabajo haría que al ejecutarse el javascript, pues siguiese la dirección indicada, pero no que modificase la ruta según la carpeta en la que esté.
Si modifico el código javascript y le añado el ../ delante de cada enlace de imagen, la cosa funciona, pero se me joroba para el caso del index.html (evidentemente). También si pongo el enlace completo desde el servidor web, funciona, pero me interesa que se pueda ejecutar desde un servidor local (sin estar conectado a internet, vamos), de ahí que use los enlaces parentales.
Así que bueno, me gustaría ver si alguien podría indicarme cómo solucionar este problemilla, ya que me tiene un poco estancado, la verdad.
Un saludo.