cocodj69 fíjate que en el ejemplo que pones en el que llamas a una página en PHP con parámetros, al crear el rollover, la URL de la imagen es la misma, es decir, es "rollover.gif". Si estás en el directorio
http://www.servidor.com/A/B/C.php?id=X, al decir al navegador que busque la imagen "rollover.gif", la buscará en
http://www.servidor.com/A/B/rollover.gif y esto no depende del parámetro de PHP que puede ser el que sea ya que en la caché se guardará la URL (
http://www.servidor.com/A/B/rollover.gif) y la imagen.
Sobre lo de FF, comprueba que no tengas la opción de vaciar caché cada vez que cierras el navegador. Estoy casi seguro que lo que te sucede es por alguna opción que tienes en tu navegador porqué yo también uso FF y de un día para otro, aún tengo las imágenes en la cache.
Como te dije, no se puede comprobar si la imagen ya existe en la caché o si está cargada previamente, etc. Lo que puedes hacer es lo siguiente:
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <script type="text/javascript"> <!--
var rollover = false;
function changeImg( img ) {
if( rollover ) {
if( img == 'original' ) document.getElementById( 'imagenRollover' ).src = oldimage.src;
else document.getElementById( 'imagenRollover' ).src = newimage.src;
}
}
//Precarga de imagenes
var oldimage = new Image();
oldimage.src = 'imagen1.png';
var newimage = new Image();
newimage.src = 'imagen2.png';
-->
<body onload="rollover=true"> <img src="imagen1.png" alt="IMAGEN" onmouseover="changeImg()" onmouseout="changeImg( 'original' )" id="imagenRollover" />
La idea es deshabilitar el rollover mediante la variable 'rollover'. Entonces, cuando el navegador da la señal de que ya tiene todos los elementos de la web cargados en RAM (es decir, cuando el navegador ejecuta el evento 'onload' del tag 'body'), entonces habilitamos el rollover. Fíjate que la precarga de imágenes no es mas que declarar variables imagen llamando a la URL de las mismas. De este modo, cuando el navegador lo ejecuta, no muestra la imagen en ningún lado pero memoriza las imágenes y, como forman parte de la web, no puede ejecutar el 'onload' hasta que no las tiene a las dos cargadas.
NOTA: Fíajte que la imagen 'imagen1.png' se 'carga' dos veces, una en JS y la otra en el tag 'img'. Esto no es problema porque la buscará una vez en internet y a la siguiente, la cargará de caché.
Saludos y suerte