Câu hỏi chính xác là làm thế nào để làm điều đó với JavaScript thuần không phải với jQuery.
Nhưng tôi luôn sử dụng giải pháp có thể tìm thấy trong mã nguồn của jQuery. Nó chỉ là một dòng JavaScript gốc.
Đối với tôi đó là, dễ dàng có thể đọc được và thậm chí tốt nhất afaik con đường ngắn nhất để có được những nội dung iframe.
Trước tiên hãy lấy iframe của bạn
var iframe = document.getElementById('id_description_iframe');
// or
var iframe = document.querySelector('#id_description_iframe');
Và sau đó sử dụng giải pháp của jQuery
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
Nó hoạt động ngay cả trong Internet Explorer thực hiện thủ thuật này trong thuộc contentWindow
tính của iframe
đối tượng. Hầu hết các trình duyệt khác sử dụng thuộc contentDocument
tính và đó là lý do tại sao chúng tôi chứng minh thuộc tính này trước tiên trong điều kiện HOẶC này. Nếu nó không được đặt thử contentWindow.document
.
Chọn các yếu tố trong iframe
Sau đó, bạn thường có thể sử dụng getElementById()
hoặc thậm chí querySelectorAll()
để chọn Phần tử DOM từ iframeDocument
:
if (!iframeDocument) {
throw "iframe couldn't be found in DOM.";
}
var iframeContent = iframeDocument.getElementById('frameBody');
// or
var iframeContent = iframeDocument.querySelectorAll('#frameBody');
Các hàm gọi trong iframe
Chỉ lấy window
phần tử từ iframe
để gọi một số hàm toàn cục, biến hoặc toàn bộ thư viện (ví dụ jQuery
):
var iframeWindow = iframe.contentWindow;
// you can even call jQuery or other frameworks
// if it is loaded inside the iframe
iframeContent = iframeWindow.jQuery('#frameBody');
// or
iframeContent = iframeWindow.$('#frameBody');
// or even use any other global variable
iframeWindow.myVar = window.myVar;
// or call a global function
var myVar = iframeWindow.myFunction(param1 /*, ... */);
Ghi chú
Tất cả điều này là có thể nếu bạn tuân thủ chính sách cùng nguồn gốc .