Foros del Web » Programando para Internet » Javascript »

Ejecutar un script al cargar una imagen

Estas en el tema de Ejecutar un script al cargar una imagen en el foro de Javascript en Foros del Web. Hola a todos: Necesito hacer una función que capte cuando una imagen se ha cargado en el navegador y en ese momento se ejecute. He ...
  #1 (permalink)  
Antiguo 25/07/2008, 13:45
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Ejecutar un script al cargar una imagen

Hola a todos:

Necesito hacer una función que capte cuando una imagen se ha cargado en el navegador y en ese momento se ejecute.

He visto este código por aquí
Cita:
<script type="text/javascript">
$(document).ready(function() {
//Todo lo que pongas aquí se ejecuta cuando se haya cargado la página
<%
borra(titulo) 'esto lo he agregado yo pero la borra antes de cargarla
%>
});
</script>
Se sobreentiende que cuando cargue la página , habrá cargado la imagen, pero no es así se ejecuta el script antes.

Para que podais entenderme mejor paso a detallar el funcionamiento de lo que necesito:
Cuando un usuario pide ver una imagen, la carga el servidor en una carpeta temporal y la muestra por el clásico <img src="<%=titulo%>" id="imagen"> y quiero que al tenerla el usuario en su pantalla, se elimine de la carpeta temporal.

Este código ya está hecho en asp y funciona, pero necesito captar cuando se carga la imagen para que se ejecute.

Gracias
Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #2 (permalink)  
Antiguo 25/07/2008, 14:43
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Ejecutar un script al cargar una imagen

Usa el evento onload de img. Puedes poner un retraso usando setTimeOut para mayor seguridad.
__________________
twitter: @imbuzu
  #3 (permalink)  
Antiguo 25/07/2008, 14:47
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Ejecutar un script al cargar una imagen

Ahhhh... pero no. ASP se ejecuta en el lado del cliente. Sin importar cuanto lo trates de ese modo no podrás hacerlo. Lo mejor sera que uses ajax. Aun tendrás que usar el evento onload de img para activar una función ajax que envíe la orden al servidor para que elimine la imagen. Por cierto, para que quieres eso. Siempre es bueno decir para que lo quieres así ayudas a generar mas ideas que quizá puedan resolver otros problemas.
Saludos.
__________________
twitter: @imbuzu
  #4 (permalink)  
Antiguo 26/07/2008, 10:28
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Hola buzu

Gracias por responder, no sabía que se le podía poner el unload a un img, y aunque sea asp se puede hacer llamandolo después.
Lo he solucionado así:
Cita:
<img onload="borra()" style="visibility: visible" src="<%=titulo%>">
<script>
function borra() {
document.getElementById('oculto').src ='borra.asp?titulo=<%=titulo%>'; //si funciona
//window.oculto.location.href = 'borra.asp?titulo=<%=titulo%>'; //también funciona
}
</script>
<iframe id="oculto" name="oculto" src="" style="visibility:hidden;display:none"></iframe>
Ahora me falta sólo darle un retraso.

Y con respecto a para qué quiero esto, pues es largo de explicar, pero lo intentaré de forma breve.
Las carpetas donde tengo las imágenes están con permiso sólo a aplicaciones mías porque si les doy permiso para cogerlas por href="carpeta/imagen.jpg" ha habido mucha gente que me las quita masivamente.

De esta forma las saco con el componente asp.jpeg, pero el usuario al querer guardarlas, sale como predeterminado el nombre del código.asp y tiene que escribir a mano el título o dejarlo así, pero a la siguiente si no cambia le sobreescribe la imagen.

Ahora las saco con el mismo componente, las guardo en una carpeta temporal con su nombre, asi se puede guardar con su nombre real sin tocar nada, y después la elimino de la temporal, para que se pierda y para que no abulte dicha carpeta.

Espero que ahora sepas para que quería este código.

Gracias
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #5 (permalink)  
Antiguo 27/07/2008, 13:58
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Ejecutar un script al cargar una imagen

Ya veo, algo complicado y al final se que habra quien te las pueda volar... Eso es el precio a pagar en internet. Y si, si funciona por que usas un iframe, eso es algo como ajax pero de la vieja escuela. No sabia que usabas un iframe. Si necesitas un delay usa setTimeout().
__________________
twitter: @imbuzu
  #6 (permalink)  
Antiguo 28/07/2008, 16:09
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Si buzu, alguien me volará algunas de las más de 600.000 que hay, pero eso es lo que intento, que no las vuelen.
desde que utilizo el componente asp.jpeg no ha volado nada más que las que elige el usuario,pero nunca masivamente, pero es un engorro el tener que escribir el nombre de la imagen cada vez, ya que el componente aunque sea de pago no acepta guardar la imagen con su nombre, siempre las guarda con el nombre de la página.

Ahora me falta contar las imágenes y poner un tope al día para que en el caso que sea un spider o crawler o programa a medida se corte a ese tope,
pero eso va lento, tardaré uno o dos meses.

Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #7 (permalink)  
Antiguo 28/07/2008, 17:17
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Me causa curiosidad ¿de que son las imágenes XD?

Y creo que con .htacces habría algo que puede servirte para eso que quieres... pero como he odio "asp"
  #8 (permalink)  
Antiguo 28/07/2008, 19:19
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Ejecutar un script al cargar una imagen

Wow, me da curiosidad tambien, de que son las imagenes? (no es necesario responder) De cualquier modo, suerte.
__________________
twitter: @imbuzu
  #9 (permalink)  
Antiguo 28/07/2008, 23:20
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Je je je ..... perded unos sedundos y visitad la página.
Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #10 (permalink)  
Antiguo 01/08/2008, 13:27
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Bueno ,

he usado setTimeout() de esta forma:
Cita:
setTimeout("document.getElementById('ima').src = '<%=servidor%><%=th%>temporal/<%=ama%>'",2000)
Funciona casi siempre. Pero si la variable ama (asp) lleva el caracter ' por ejemplo it's, no funciona.

Alguna idea??
Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #11 (permalink)  
Antiguo 02/08/2008, 01:59
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Lo he modificado por esto
Cita:
function retardo(){document.getElementById('ima').src = "<%=servidor%><%=th%>temporal/<%=ama%>"}
setTimeout('retardo()',2000);
Y de momento funciona, pero alguien puede decirme si este código está bien escrito ??

Sálu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #12 (permalink)  
Antiguo 02/08/2008, 09:19
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Ejecutar un script al cargar una imagen

Hola:

Sí, el código está correcto (siempre que el ASP esté correcto, estoy verde en ese lenguaje). Si a veces la ruta contiene el caracter ', intenta evitarlo en la medida de lo posible. Para que javascript no dé fallo tendrías que usar alguna función en ASP para reemplazar (creo que era Replace() si no me falla la memoria). Si realizas el reemplazo de ' por \' todo debería funcionar.

Como dijo SebasSebas dependiendo de qué servidor utilices tendrás opciones para que no te "roben" las imágenes; pero dudo que utilices Apache con ASP. IIS puede que tenga algo, no lo sé. De todas maneras parece que el script que has creado es interesante, salvo por la carga que tendrá el servidor.

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #13 (permalink)  
Antiguo 02/08/2008, 10:02
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Bien derkenuke gracias por responder.

Lo que yo quería era saber si el javascript estaba correcto.
No se puede reemplazar la ' por /' ya que no funcionaría, quedaría esa comilla en medio sola y es la que da el error.
Supongamos que la variable lleva it's only love , con el primer ejemplo quedaría así:
Cita:
..... src='/temporal/it's only love.jpg'
Eso no está bien escrito a mi entender y por eso da error, sin embargo con el segundo ejemplo quedaría así:
Cita:
..... src="/temporal/it's only love.jpg"
Esto tiene más lógica.

En cuanto a lo de robar las imágenes en asp, pues sólo he averiguado poner la carpeta en read inherit, o sea que solo la leen las aplicaciones, si se le da permiso de read es como vuelan., porque la gente usa lo inimaginable para aprovecharse.

Mira por ejemplo lo que me estaba haciendo este:
http://cdcovers.to/audio/mc5-1970-ba...he-usa-1094544
Este no las volaba, este utilizaba mi servidor,

Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #14 (permalink)  
Antiguo 02/08/2008, 10:56
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: Ejecutar un script al cargar una imagen

Hola de nuevo:

Cita:
Iniciado por eeeee Ver Mensaje
No se puede reemplazar la ' por /' ya que no funcionaría, quedaría esa comilla en medio sola y es la que da el error.
Ojo que no es /', es \' (escapar la comilla). En javascript podemos escribir esto:
Código PHP:
var str 'Y Paco dijo: \'No me importa meter mas comillas.\' Y así fue'
Es la manera de incluir comillas del mismo tipo dentro de un String.

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #15 (permalink)  
Antiguo 02/08/2008, 11:13
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Je je , quizás lleves razón, no controlo mucho el javascript.

Pero después no buscaría la carátula '/temporal/it\'s only love.jpg' ??
y ese nombre no esixte.
A veces la ruta original lleva las barras invertidas para separar subdirectorios, no me crearía otros problemas ??

De todos modos al hacerlo como la última vez me va bien.
Ahora estoy intentando que cargue otra vez la foto en caso de error porque a veces el servidor no la ha generado todavía, para ello utilizo en el img ... onerror="intenta(this.src)"
y la funcion es
function intenta(esto){document.getElementById('ima').src = esto}

pero necesitaría que lo hiciera máximo dos veces, alguna idea ??


Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #16 (permalink)  
Antiguo 02/08/2008, 11:35
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Ejecutar un script al cargar una imagen

El problema esta en que al escribir esto:

src='/temporal/it's only love.jpg'

estas haciendo lo siguiente:

Con el primer apostrofe (') abres un string '/temporal/it' Ese segundo apostrofe es el que te jode todo ya que lo que hace es cerrar el string de modo que lo otro que te queda podría ser considerado como una variable, aun que para concatenar te faltaría tener un mas (+) y si fuera una variable no debería llevar espacios. El problema se hace mas grande cuando al final del texto tienes otro apostrofe (') lo que abre otro string convirtiendo el resto de tu javascript en un string que finaliza hasta que se encuentre otro apostrofe. Para resolverlo no es necesario que escapes el apostrofe en it's, simplemente cambia los apostrofes inicial y final por comillas (").

Saludos.
__________________
twitter: @imbuzu
  #17 (permalink)  
Antiguo 02/08/2008, 11:42
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Ejecutar un script al cargar una imagen

Cita:
Pero después no buscaría la carátula '/temporal/it\'s only love.jpg' ??
y ese nombre no esixte.
No, no te buscaría eso, ya que el javascript interpretaría eso como temporal/it's only love.jpg después de escapar el apostrofe.

Cita:
pero necesitaría que lo hiciera máximo dos veces, alguna idea ??
Puedes poner una variable que aumentas cada vez que el código es puesto en marcha, pero antes de que la función funcione checas si la variable es menor a dos, si lo es, sigues adelante con la función, si no lo es, te sales de la función con un return.

algo como

var cuenta = 0;
function mifunc(){
cunta++;
if(cuenta < 2){
//aqui el codigo de tu funcion.
}
}
__________________
twitter: @imbuzu
  #18 (permalink)  
Antiguo 02/08/2008, 11:46
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ejecutar un script al cargar una imagen

Si buzu

eso es lo que he hecho pero cambiando el sistema del settimeout

A esto no se le pueden poner comillas dobles porque da error:

setTimeout("document.getElementById('ima').src = '<%=servidor%><%=th%>temporal/<%=ama%>'",2000)

Sin embargo a esto si:

function retardo(){document.getElementById('ima').src = "<%=servidor%><%=th%>temporal/<%=ama%>"}
setTimeout('retardo()',2000);


En cuanto al contador voy a intentarlo

Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #19 (permalink)  
Antiguo 02/08/2008, 17:08
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Ejecutar un script al cargar una imagen

Claro, ahi ya estas usando una combinación de comillas que no te dejaría aplicar esa solución. Sin embargo, creo que es mejor que declares una función independiente que haga ese trabajo y al setTimeout solo le pases la función. Eso te ayudaría tanto a reducir el coste de mantenimiento del script como a mantener la legibilidad.
__________________
twitter: @imbuzu
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:32.