Chodzi o to, aby użyć żądania Ajax do "przetestowania" adresu URL. Żądania Ajax umożliwiają wiązanie procedur obsługi "sukcesu" i "błędu" - w przeciwieństwie do elementów , które udostępniają tylko procedurę obsługi "ładowania".
Oczywiście, żądania Ajax są ograniczone przez zasady Same Origin (chyba że serwer WWW umożliwia CORS), ale użytkownik stwierdził, że plik PDF znajduje się w tej samej domenie, więc nie powinno być żadnych problemów.
Podano również, że korzystasz z biblioteki Mootools - używam jQuery, więc mogę zapewnić ci tylko rozwiązanie jQuery, ale ponieważ tworzymy proste żądanie Ajax z obsługą "sukcesu" i "błędu" , powinieneś być w stanie odtworzyć rozwiązanie Mootools oparte na moim rozwiązaniu jQuery.
więc, biorąc pod uwagę iframe i URL:
var iframe = $('#iframe')[0]; // reference to IFRAME element
var url = 'files/document1.pdf';
Ajax-request:
$.get(url, function() {
iframe.onload = function() { alert('PDF opened!'); };
iframe.src = url;
}).error(function() { alert('PDF not found'); });
Success-demo:http://jsfiddle.net/CZWdL/1/show/
Error-demo:http://jsfiddle.net/CZWdL/2/show/
Tak więc, jeśli t Żądanie Ajax wyzwala zdarzenie "błąd", natychmiast po prostu ostrzegamy wiadomość "Nie znaleziono". Jeśli jednak żądanie Ajax wyzwala zdarzenie "powodzenia", przypisujemy procedurę obsługi "load" do naszego elementu IFRAME (ten moduł obsługi "load" w końcu ostrzeże komunikat "Loaded") i ustawi adres URL na jego właściwość src
ręcznie.
Czy ładujesz plik PDF do elementu iframe? –
@ ŠimeVidas yes. Chcę tak, jeśli pdf nie może zostać załadowany z serwera, powinien pojawić się komunikat "alert". –
Czy plik PDF znajduje się w tej samej domenie co strona internetowa? –