Итак, идея в том, чтобы использовать Ajax-запрос для «проверки» URL. Ajax-запросы позволяют связывать обработчики «success» и «error» - в отличие от <iframe>
элементов, которые предоставляют только обработчик «load».
Конечно, Ajax-запросы ограничены одной и той же политикой происхождения (если веб-сервер не поддерживает CORS), но вы указали, что PDF находится в одном домене, поэтому не должно быть никаких проблем.
Кроме того, вы заявили, что используете библиотеку Mootools - я использую jQuery, поэтому могу предоставить вам только решение jQuery, но поскольку мы делаем простой Ajax-запрос с обработчиками «success» и «error», у вас должна быть возможность легко воссоздать решение Mootools на основе моего решения jQuery.
Итак, с учетом iframe и URL:
var iframe = $( '#iframe' )[0]; // reference to IFRAME element
var url = 'files/document1.pdf';
Ajax-запрос:
$.get( url, function () {
iframe.onload = function () { alert( 'PDF opened!' ); };
iframe.src = url;
}).error( function () { alert( 'PDF not found' ); });
Демонстрация успеха: http://jsfiddle.net/CZWdL/1/show/
Ошибка-демо: http://jsfiddle.net/CZWdL/2/show/
Таким образом, если Ajax-запрос вызывает событие «ошибка», мы просто немедленно предупреждаем сообщение «Не найдено». Однако, если Ajax-запрос вызывает событие «success», мы назначаем обработчик «load» нашему элементу IFRAME (этот обработчик «load» в конечном итоге предупредит сообщение «Loaded») и устанавливаем URL-адрес равным * 1023. * свойство вручную.