Entonces, la idea es usar una solicitud de Ajax para "probar" la URL. Las solicitudes Ajax le permiten vincular manejadores de "éxito" y "error", a diferencia de los elementos que solo proporcionan un controlador de "carga".
Por supuesto, las solicitudes Ajax están restringidas por la misma política de origen (a menos que el servidor web habilite CORS), pero usted indicó que el PDF está en el mismo dominio, por lo que no debería haber ningún problema.
Además, indicó que usa la biblioteca Mootools - Yo uso jQuery, por lo que solo puedo proporcionarle una solución jQuery, pero dado que estamos haciendo una simple solicitud Ajax con manejadores de "éxito" y "error" , debería ser capaz de recrear fácilmente una solución Mootools basada en mi solución jQuery.
Así, dado un IFRAME y una URL:
var iframe = $('#iframe')[0]; // reference to IFRAME element
var url = 'files/document1.pdf';
El Ajax-solicitud:
$.get(url, function() {
iframe.onload = function() { alert('PDF opened!'); };
iframe.src = url;
}).error(function() { alert('PDF not found'); });
Éxito-demo:http://jsfiddle.net/CZWdL/1/show/
Error-demo:http://jsfiddle.net/CZWdL/2/show/
Entonces, si t La solicitud Ajax desencadena un evento de "error", simplemente alertamos inmediatamente al mensaje "No encontrado". Sin embargo, si la solicitud Ajax desencadena un evento de "éxito", asignamos un controlador de "carga" a nuestro elemento IFRAME (este controlador de "carga" eventualmente alertará al mensaje "Cargado") y establece la URL en su propiedad src
a mano.
¿Está cargando un archivo PDF en el iframe? –
@ ŠimeVidas sí. Quiero que si el pdf no se puede cargar desde el servidor, aparezca un mensaje de alerta "alerta" –
¿Está el PDF en el mismo dominio que la página web? –