Vì vậy, ý tưởng là sử dụng một yêu cầu Ajax để "kiểm tra" URL. Các yêu cầu Ajax cho phép bạn kết nối các trình xử lý "thành công" và "lỗi" - không giống như các phần tử chỉ cung cấp trình xử lý "tải".
Tất nhiên, yêu cầu Ajax bị hạn chế bởi Chính sách xuất xứ giống nhau (trừ khi máy chủ web bật CORS), nhưng bạn đã nói rằng PDF nằm trên cùng một miền, do đó không có bất kỳ vấn đề nào. Ngoài ra, bạn đã nói rằng bạn sử dụng thư viện Mootools - tôi sử dụng jQuery, vì vậy tôi chỉ có thể cung cấp cho bạn giải pháp jQuery, nhưng vì chúng tôi đang thực hiện một yêu cầu Ajax đơn giản với trình xử lý "thành công" và "lỗi" , bạn sẽ có thể tạo lại một giải pháp Mootools dựa trên giải pháp jQuery của tôi một cách dễ dàng.
Vì vậy, với một khung nội tuyến và URL:
var iframe = $('#iframe')[0]; // reference to IFRAME element
var url = 'files/document1.pdf';
Các Ajax yêu cầu:
$.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/
Lỗi-demo:http://jsfiddle.net/CZWdL/2/show/
Vì vậy, nếu t yêu cầu Ajax của anh ta kích hoạt sự kiện "lỗi", chúng tôi chỉ cần cảnh báo ngay lập tức thông báo "Không tìm thấy". Tuy nhiên, nếu yêu cầu Ajax kích hoạt sự kiện "thành công", chúng tôi chỉ định trình xử lý "tải" cho phần tử IFRAME của chúng tôi (trình xử lý "tải" này cuối cùng sẽ cảnh báo thông báo "Đã tải") và đặt URL thành thuộc tính src
của nó bằng tay.
Nguồn
2012-03-06 00:23:41
Bạn đang tải tệp PDF vào iframe? –
@ ŠimeVidas yes. tôi muốn như thế này nếu pdf không thể được tải từ máy chủ một hộp thông báo "cảnh báo" nên đến –
Có phải PDF trên cùng một tên miền với trang web không? –