Forzar la descarga de una imagen



  • Bueno, pues lo que pregunto no se si se puede hacer pero no he encontrado nada asique a ver si alguien lo sabe.

    La historia es que tengo un página html en la que tengo por ejemplo una imagen que con el evento "OnMouseOver" hago que cambie a otra.

    Bien, pues lo que pasa es que carga toda la página pero al situarme encima de la imagen pues tarda un poco en cambiar la primera vez, ya que al situarme encima pide al servidor la nueva imagen y por eso tarda, luego ya va bien ya que está en cache.

    Y pregunto: No hay alguna manera de hacer que el explorador pida al servidor esa segunda imagen al principio para que cuando yo me situe encima ya la tenga en la cache????

    No se si me explico…...........



  • Claro, hay una manera que es archi-conocida. Es un comportamiento muy usado.

    Si no te quieres comer la cabeza programándolo, usa el Dreamweaver (cualquier version) y verás la opción "carga previa de imágenes" en el menú de comportamiento de objetos. De esa manera, te carga ese rollover (ambas imágenes) al inicio y no cuando pasas el ratón por encima ;)

    Si quieres hacerlo a pelo, tú mismo, pero para qué reinventar la rueda!? :p

    Un saludo
    Blëøm



  • Joer, pero esque no lo tengo ni instalado el dreamweaver…...............

    Es mu chungo de hacer a pelo????
    Se puede hacer con el frontpage???



  • No, difícil no es, si sabes javascript. Yo si se, y aun así, prefiero hacerlo automáticamente.

    Si quieres, pasame por mail el código de la page, y trato de incrustártelo ;)

    Un saludo
    Blëøm



  • Bueno, ahora estoy en el curro. Esta tarde te mando un email.

    Javascript si se asique me imagino que lo entenderé.

    Se me ha ocurrido que una opción puede ser cargar inicialmente la "segunda" imagen y en cuanto esté cargada la página y gracias a un evento cambiar esa imagen por la "primera". De esa manera estarán las dos en cache.

    Sino, me puedes contar así a groso modo como va el rollo.



  • Bueno, mejor que un mail te cuelgo aquí un ZIP con un archivito to chorra con lo típico de un icono de mail para ver si me puedes incrustar el código y luego yo veo como lo has echo.





  • Aquí lo tienes, fiera ;)

    <title>prueba</title>

    onbeforeunload="MM_preloadImages('mnu_contacte_off_modificado.gif','mnu_contacte_on_modificado.gif')">

    Te he puesto en negrita las líneas que debes añadir. Lo primero, es la función javascript y lo segundo, es la llamada a la función y los parámetros, que son la ruta de las imágenes a precargar.Puedes poner tantas imágenes en precarga como quieras, pues tan sólo tienes que añadirlas tal y como te las he puesto. Con esta línea de código, podrás "pre-cargar" todas las imágenes que quieras.

    Te habría contestado al mail, pero me parece más constructivo hacerlo en la misma rama ;)

    Espero que te sirva, porque funcionar, funciona de maravilla (yo siempre lo uso!!!)

    Un saludo
    Blëøm



  • Muchisimas gracias. Eres un fenómeno. :risitas: :risitas:



  • Bueno, acabo de mirarlo y creo que tienes una cosa mal y es la llamada a la función, que no es dentro de la imagen sino dentro de la etiqueta BODY.

    <title>prueba</title>

    onbeforeunload="MM_preloadImages('mnu_contacte_off_modificado.gif','mnu_contacte_on_modificado.gif')">



  • No está mal. Ahora te explico por qué ;)

    Estaría mal si la función estuviese declarada allí, en el body. Sin embargo, lo que está en el body, es la llamada a la función, que es exactamente donde se ubica la imagen a precargar. Primero, declaras una función en la cabecera, y luego la llamas en el momento y el lugar exacto donde la necesites. Lo que no va a estar nunca, es la llamada en la cabecera pues allí no tendrás ninguna imagen y porque allí no se ponen rutas de imágenes. Todas las llamadas se hacen en el cuerpo del programam haciendo alusión a la función previamente declarada. Funciona así para todos los lenguajes de programación (al menos, sí para los 14 que sé usar…).

    Creeme, está bien y funciona (al menos con 3 navegadores distintos) porque lo he comprobado. La función la he generado con el dreamweaver y te he quitado la paja que mete, dejándola lo suficientemente clara como para que no tengas que saber de javascript xD

    La has probado ya, o sólo te ha "parecido" que estaba mal?

    Un saludo
    Blëøm



  • No lo he probado aún pero he estado mirando el evento "onbeforeunload" y según he leido es un evento propio del BODY y he leido que lo suyo es que valla como un atributo de la etiqueta BOSY. Por eso lo he dicho. De todas formas puede que funcione de las dos maneras.

    Según lo has puesto tu es que en cuanto teermine de cargar la imagen primera se llama a la función que carga la/s otra/s.

    Y según lo he puesto yo, la función es llamada cuando se termina de cargar la página entera.

    Creo que da igual, el resultado va a ser practicamente el mismo.



  • Bueno, pues siento decirte que no funciona.

    Lo puedes comprobar AQUI

    Es pequeña la imagen y la carga rápido pero si te fijas tarda un pelin.

    Para refrescar sin que use la cache Control+F5, por si no lo sabias.



  • Idea tonta:
    Inserta la imagen al principio de la pagina, pero de tamano 1 pixel x 1 pixel, para que no se vea. Asi el navegador la guarda en la cache y el evento onmouseover la leera de ahi. Tambien puedes cargarla en un layer invisible que esté fuera de la pantalla, y el efecto es el mismo.

    Un saludo.


Accede para responder
 

Has perdido la conexión. Reconectando a Hardlimit.