javascript - significa - ¿Cómo detectar un error 404 en un iframe?
whatsapp en linea que significa (2)
Mi página web usa iframes para recopilar contenido de otras páginas. Todas las páginas están en el mismo dominio.
Desde la página principal, ¿hay alguna forma de confirmar que todos los iframes se hayan cargado y que no haya un error 404?
El estado solo vive en el encabezado de respuesta.
La página 404 está gestionando un código de estado HTTP , que solo se incluye en la respuesta del servidor enviada al navegador, pero no en los objetos de window
y document
reales del DOM al que javascript puede acceder. Esto significa que, si bien puede recopilar el código de estado y tomar las medidas adecuadas, solo podrá hacerlo cuando su javascript esté recibiendo la respuesta, como con una solicitud jQuery.ajax () o una XmlHttRequest para cargar su "iframe" .
Espero que la página 404 siga los estándares 404.
Si lo anterior no es una opción, la única otra posibilidad puede ser verificar el título, y / o las etiquetas H, para "404". Si bien esto es sin duda menos que ideal (me encantaría ver, "404, Película no encontrada, la película"), es su única otra opción.
$(''#iframe'').load(function (e) {
var iframe = $("#iframe")[0];
if ( iframe.innerHTML() ) {
// get and check the Title (and H tags if you want)
var ifTitle = iframe.contentDocument.title;
if ( ifTitle.indexOf("404")>=0 ) {
// we have a winner! probably a 404 page!
}
} else {
// didn''t load
}
});
Supongamos que este es tu html
<html>
<head></head>
<body>
<iframe id="iframe"></iframe>
</body>
</html>
Hay dos escenarios
El src de su iframe está en el mismo dominio desde donde se originó su página.
Ex : page url www.example.com and iframe''s src www.example.com/iframe
Puede usar la solicitud jQuery ajax para verificar si el recurso está disponible
$(function() { $.ajax({ type : "HEAD", async : true, url : "www.example.com/iframe" }) .success(function() { $("#iframe").attr("src", "www.example.com/iframe"); }) .error(function(){ // Handle error perhaps a failover url }) });
El src de su iframe no apunta al mismo dominio desde donde se originó su página.
Ex : Page url www.example.com and iframe''s src www.otherdomain.com/iframe
Ahora los navegadores no le permitirán hacer una solicitud entre sitios desde el código JavaScript debido a la política de origen cruzada . El camino correcto es hacer una solicitud jsonp .
$(function() { $.ajax({ url: "www.otherdomain.com/iframe", dataType: "jsonp", timeout: 5000, success: function () { $("#iframe").attr("src", "www.otherdomain.com/iframe"); }, error: function (parsedjson) { if(parsedjson.status == "200") { $("#iframe").attr("src", "www.otherdomain.com/iframe"); } else { // Handle error } } }); });