2010-01-27 37 views
5

Hãy để tôi mở đầu này với ... Tôi đã tham khảo câu hỏi này/câu trả lời và nó dường như chứa manh mối, nhưng tôi vẫn đang mất tích bức tranh toàn cảnhngữ cảnh jQuery/javascript của khung trong khung nội tuyến là gì?

Run JQuery in the context of another frame

Về cơ bản, cấu trúc của các trang chỉ mục là

<html> 
<body> 
    <div class="frames-wrap"> 
     <iframe id="this-iframe" src="location.php"> 

     </iframe> 
    </div> 
</body> 
</html> 

location.php này sau đó có chứa một frameset (e hèm, không ý tưởng của tôi ...) có hai khung được thiết lập như vậy ...

<frameset cols="350,*"> 
    <frame src="search.php" id="frame_search" name="search"/> 
    <frame src="edit.php" id="frame_edit" name="edit" /> 
</frameset> 

nếu tôi muốn thao tác các đối tượng giữa trang chỉ mục và các yếu tố này, tôi sẽ làm như thế nào?

Tôi tiếp tục suy nghĩ ngữ cảnh phải giống như window.parent.frames[0].document ... còn thiếu gì nữa?

+0

cũng được tham chiếu, nhưng tôi quá mới để đăng nhiều liên kết http://stackoverflow.com/questions/997986/write-elements-into-a-child-iframe-using-javascript-or- jquery – technicolorenvy

+0

câu hỏi này có thể giúp bạn: http://stackoverflow.com/questions/251420/invoking-javascript-in-iframe-from-parent-page (tự quảng cáo không biết xấu hổ như câu hỏi ban đầu được tôi hỏi) –

Trả lời

2

Lời nói đầu: Bạn sẽ không thể truy cập nội dung iframe trừ khi nội dung bắt nguồn từ cùng một tên miền.

Để chọn các yếu tố trong iframe của bạn, bạn có thể sử dụng một cuộc gọi jQuery như thế này

element = $("#this_iframe").contents().find("#frame_search") 

Điều quan trọng là sử dụng contents() chức năng. Xem Traversing/contents

+1

nội dung ahh() thực sự là tuyệt vời, tôi đã không nhận ra sự hỗ trợ iframe cung cấp ... Cảm ơn! – technicolorenvy

2

Tôi nghĩ rằng liên kết từ technicolorenvy có câu trả lời, nhưng bộ chọn có thông số thứ hai ít được biết đến hơn nơi bạn có thể đặt ngữ cảnh.

Something như thế này:

var iframeDoc = document.getElementById('myIframe'); 
iframeDoc = (iframeDoc.contentWindow) ? iframeDoc.contentWindow : (iframeDoc.contentDocument.document) ? iframeDoc.contentDocument.document : iframeDoc.contentDocument; 


// From the parent window 
$('p', iframeDoc).html('Hello from parent'); 

http://docs.jquery.com/Core/jQuery#expressioncontext

1

Giving id khung của bạn mà có giá trị định danh JavaScript sẽ giúp đỡ, sau đó bạn có thể sử dụng các cấu trúc như window.top.this_iframe.frame_edit.document như hoàn cảnh của bạn.

+0

cảm ơn lời phản hồi! tuy nhiên, đây là vụ đánh bom cho tôi. các id bây giờ có dấu gạch dưới chứ không phải là dấu gạch ngang. nếu tôi sử dụng console.log để xem những gì đang xảy ra "đằng sau hậu trường", nó sẽ trả lại một cái gì đó nếu tôi đăng nhập window.top.this_iframe.document HOẶC nếu tôi đăng nhập window.top.document.getElementById ('this_iframe') để nó xuất hiện id frame_edit không được "nhìn thấy". bất kỳ ý tưởng? – technicolorenvy

0

Tất cả đều hữu ích. Tôi tiếp tục ném bom khi cố gắng vượt qua khung nội tuyến trong DOM. Điều này sẽ xuất hiện từ thực tế tôi đã có mã nằm trong phương thức ready(), nhưng bộ khung đã được gọi trong iframe không được nạp vào lúc có $ (document) .ready() được kích hoạt.

Cảm ơn tất cả sự trợ giúp và phản hồi tuyệt vời!

Các vấn đề liên quan