Foros del Web » Programando para Internet » Jquery »

Verificar 200 ok por javascript o jquery

Estas en el tema de Verificar 200 ok por javascript o jquery en el foro de Jquery en Foros del Web. Estimados estoy cargando una web externa por medio de iframe y cuando esta pagina no carge me redirija a otra pagina. Como puedo hacer esto ...
  #1 (permalink)  
Antiguo 29/10/2012, 11:00
Avatar de Sandino  
Fecha de Ingreso: octubre-2006
Mensajes: 277
Antigüedad: 17 años, 6 meses
Puntos: 1
Verificar 200 ok por javascript o jquery

Estimados estoy cargando una web externa por medio de iframe y cuando esta pagina no carge me redirija a otra pagina. Como puedo hacer esto por medio de javascript o jquery??.
Gracias
  #2 (permalink)  
Antiguo 29/10/2012, 15:09
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Verificar 200 ok por javascript o jquery

si conoces el contenido de esa web externa, puedes hacer un "ping". se trata de intentar cargar una imagen de esa web y con los métodos onload() y onerror() saber si la imagen se ha cargado. hay otros modos de hacerlo pero tienes una alta posibilidad de obtener falsos positivos. aunque esto depende de la configuración jsp que tenga el usuario
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 29/10/2012, 16:12
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Verificar 200 ok por javascript o jquery

iframe no soporta el evento onerror, y en cuanto al onload incluso si te encontrás con un 404 / 403 se va a ejecutar

Una alternativa es utilizar object en lugar de iframe, en ese caso, a menos que la respuesta sea un status 200, vas a recibir una advertencia, ejemplo

Código HTML:
Ver original
  1. <p>Ejemplo de página con status 403</p>
  2. <object width="400" height="300" data="http://foros.emprear.com/ajax" type="text/html">
  3. alert('error1')
  4. window.location.href = 'http://forosdelweb.com';


Código HTML:
Ver original
  1. <p>Ejemplo de página con status 404</p>
  2. <object width="400" height="300" data="http://foros.emprear.com/ajax/xzxaxsxzxz.html" type="text/html">
  3. alert('error2')
  4. window.location.href = 'http://forosdelweb.com';

EDITO: no funciona. asi que creo que lo que queda es:
La otra es verificar el status con Ajax

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 29/10/2012 a las 17:22
  #4 (permalink)  
Antiguo 29/10/2012, 16:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Verificar 200 ok por javascript o jquery

emprear creo que no me expliqué bien. desde al página contenedora se hace una petición de un recurso, una imagen, y al mismo tiempo registramos un evento para saber si se cargó la imagen
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 29/10/2012, 16:36
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Verificar 200 ok por javascript o jquery

Pero pregunto?
La existencia de una imagen ó no, implica la existencia del html que la llama?
Y como siempre en estos casos, siempre supongo lo peor, que el usuario nos responderá luego diciendo que no tiene acceso a la página que carga el iframe



Agrego, mi ejemplo anterior tampoco funciona bien
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 29/10/2012 a las 17:23
  #6 (permalink)  
Antiguo 29/10/2012, 18:11
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Verificar 200 ok por javascript o jquery

con un ejemplo se entenderá mejor
Cita:
<!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">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title></title>
<head>
<script type="text/javascript">document.write('<img src="http://static.forosdelweb.com/fdwtheme/images/buttons/reply.gif?'+Math.random()+'" style="display:none" onload="fnc(true);" onerror="fnc(false);" />');</script>
</head>
<body>
<script type="text/javascript">
function fnc(exito) {
if (!exito) {
document.getElementById('framebox').src = 'http://www.maestrosdelweb.com/';
}
}
</script>
<IFRAME id="framebox" name="framebox" frameborder="1" scrolling="auto" src="http://www.forosdelweb.com/"></IFRAME>
</body>
</html>
como ves pido una imagen de forosdelweb (reply.gif). como existe, en el iframe se cargara forosdelweb. si ahora cambiamos el nombre de la imagen por (replys.gif), como no existe, en el iframe se cargará maestrosdelweb
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 29/10/2012, 18:40
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Verificar 200 ok por javascript o jquery

Buena la has hecho,, ahora me confundiste más que antes

Según sandino
Cita:
cargando una web externa por medio de iframe y cuando esta pagina no carge me redirija a otra pagina
Según entiendo vos lo que a lo sumo verificas con la existencia de la imagen, es la imagen misma (on en todo caso que determinado servidor no está caído), no la url del html que se llama en el iframe. Bien podría ser que replys.gif no existiese (o sí, daría lo mismo), pero tampoco existiesen:

http://www.forosdelweb.com/estapaginanoexiste.html ó
http://www.maestrosdelweb.com/estapaginanoexiste.html

Se cargaría un 404 en ambos casos
Volviendo a mi ejemplo del <object>. que no funcionó, explico, por ahi se te ocurre algo

si el src del iframe no existe se carga un ErrorDocument 404, personalizado ó por defecto del server, un caso similar, si fuese un 403 (supongamos que invocamos un directorio con el indexado prohibido)
Con el object, a menos que el valor para data de un status 200, la url no se carga y muestra el contenido alternativo

<object....>
<p>Se muestra esto !</p>
</object>

en función de eso se me ocurrió que al usar

<object....>
<script>
//... redirección
</script>
</object>

iba a funcionar, pero después me di cuenta de que la script se ejecuta siempre

Ejemplo
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Html5</title>
  5.  </head>
  6.     <p>iframe</p>
  7. <iframe width="400" height="200" src="http://www.maestrosdelweb.com/">no soporta iframe</iframe>
  8.     <p>iframe</p>
  9. <iframe width="400" height="200" src="http://www.forosdelweb.com/estapaginanoexiste.html">no soporta iframe</iframe>
  10.     <p>iframe</p>
  11. <iframe width="400" height="200" src="http://foros.emprear.com/ajax">no soporta iframe</iframe>
  12.  
  13.         <p>object</p>
  14. <object width="400" height="200" data="http://www.maestrosdelweb.com/" type="text/html">
  15. <p>
  16. no se cargó
  17. </p>
  18.     <p>object</p>
  19. <object width="400" height="200" data="http://www.forosdelweb.com/estapaginanoexiste.html" type="text/html">
  20. <p>
  21. no se cargó
  22. </p>
  23.     <p>object</p>
  24. <object width="400" height="200" data="http://foros.emprear.com/ajax" type="text/html">
  25. <p>
  26. no se cargó
  27. </p>
  28. </body>
  29. </html>


quizás analizando el como se comporta el object respecto a un status != 200 se te ocurra algo

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 29/10/2012, 18:54
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Verificar 200 ok por javascript o jquery

Creo tener la solución, recordé que con el tema de los plugins flash, quickTime, etc <object> permitía, "anidar objects", modificando el ejemplo anterior, en el último object podemos hacer

Código HTML:
Ver original
  1. <object width="400" height="200" data="http://foros.emprear.com/ajax" type="text/html">
  2. <object width="400" height="200" data="http://foros.emprear.com/" type="text/html"></object>
  3. </object
>

Desde luego que esa segunda url tendremos que asegurarnos exista

Demo:
http://foros.emprear.com/html/redirect-object.html

Espero que sea eso lo que quiere.
Igualmente sería bueno ver lo del javascript
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 30/10/2012, 07:07
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Verificar 200 ok por javascript o jquery

yo entendí que la url existe. y lo que quería es que en caso de caída del servidor o tiempo de espera agotado, se cargara en el iframe una web en respuesta diferente al jsp del usuario

se podría cargar una web alternativa si el error es 50x (servidor)?? si es así, tu opción es la mas completa
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #10 (permalink)  
Antiguo 30/10/2012, 08:23
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Verificar 200 ok por javascript o jquery

Cita:
Iniciado por IsaBelM Ver Mensaje
se podría cargar una web alternativa si el error es 50x (servidor)?? si es así, tu opción es la mas completa
Si, pero debería hacerse via .htaccess, generalmente un ErrorDocument 500 apunta a una url externa al server.
Pero como aqui hablamos de redirección ante la imposibilidad de cargar la url del iframe, no es lo mismo.
Por otro lado un error 500 implica un error en un servidor, pero nó que este esté caido
Forcé y agregué un error 500 en los ejemplos
http://foros.emprear.com/html/redirect-object.html

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 30/10/2012, 15:40
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Verificar 200 ok por javascript o jquery

hay algunos aspectos de tu respuesta que no comprendo

Cita:
Iniciado por emprear Ver Mensaje
Si, pero debería hacerse via .htaccess, generalmente un ErrorDocument 500 apunta a una url externa al server.

en el apache tenéis la suerte de tener .htaccess.
cuando he programado en asp, mi servidor (iss) me ha arrojado errores 50x. el mas común era el 500


Pero como aqui hablamos de redirección ante la imposibilidad de cargar la url del iframe, no es lo mismo.

hasta ahora no me había dado cuenta que se trata de redireccionar

Por otro lado un error 500 implica un error en un servidor, pero nó que este esté caido

no es el error 503?? servicio no disponible
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #12 (permalink)  
Antiguo 30/10/2012, 16:43
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Verificar 200 ok por javascript o jquery

Primero me voy a apartar del planteo original.
Cuando el navegador resuelve una ip a través de los DNS abre un socket IP hacia la misma enviando y recibiendo un flujo de datos a través del protocolo HTTP, ese flujo de datos contiene códigos de estado, los más conocidos
200 = ok
404 = not found
403 = Forbidden
500 = Internal server error
y el que mencionas
503 = Service Temporarily Unavailable

Sea cual fuese el caso, eso no significa que el server NO esté funcionando, ya que en definitiva esos mensajes se generan en el Servidor Apache (En IIS los códigos son los mismos, ya que estos atañen al protocolo http, no al Software que usemos)

El error 503 es bastante particular, ya que se lo genera exprofeso, la situación típica, estamos haciendo tareas de mantenimiento y queremos indicar que la baja es "temporal", su uso más frecuente es favorecer el reindexado por parte de los buscadores, suele ir acompañando de una directiva
Header always set Retry-After "36000" (el tiempo en segundos)
Aqui dejo un ejemplo
http://foros.emprear.com/503

Estás son las cabeceras que envía la página
Date: Tue, 30 Oct 2012 22:19:17 GMT
Server: Apache/2.2.15 (CentOS)
Retry-After: 18000
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 292
Connection: close
Content-Type: text/html; charset=iso-8859-1

503 Service Temporarily Unavailable


Muy diferente sea el caso de intentar navegar, y permitime el atrevimiento, por ejemplo
http://IsabelM-emprear.com

Servidor no encontrado
Firefox no puede encontrar el servidor en www.isabelm-emprear.com


Y aqui retomo lo dicho por @Sandino
Cita:
cuando esta pagina no carge me redirija a otra pagina
Yo entiendo que sí es una redirección, Muy sencillo sería crear un ErrorDocument para los diferentes status, con lo que el iframe redireccionaría a una página específica (menos desde luego, en el caso del IsabelM-emprear.com), pero para una solución global,ya que @Sandino no indica lo contrario, y que no vamos a tener acceso al .htaccess de la url externa, la solución del uso de <object> es la más indicada.

He agregado en mi ejemplo, los casos de 503 y del servidor ficticio, y la redirección a la url del segundo object anidado, se produce sin problemas
http://foros.emprear.com/html/redirect-object.html


Espero que haya quedado más claro
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 30/10/2012, 17:10
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Verificar 200 ok por javascript o jquery

que hay que hacer una redirección. me di cuenta tarde
en que consiste el error 503. me ha quedado claro
pero
Cita:
Iniciado por emprear Ver Mensaje
Si, pero debería hacerse via .htaccess, generalmente un ErrorDocument 500 apunta a una url externa al server.
no acabo de pillarlo

de cualquier modo, no tiene importancia
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #14 (permalink)  
Antiguo 30/10/2012, 17:35
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Verificar 200 ok por javascript o jquery

Ya que llegamos hasta aquí
En ciertos casos el error 500 puede afectar la visualización de la página definida en el errorDocument, por lo que conviene, en la medida de lo posible, en lugar de definir una página local, utilizar una url a otro dominio
errorDocument 500 "http://otrodominio.com/error500.php

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: 200, javascript, verificar
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 18:51.