2011-01-05 30 views
9

Tôi đang cố gắng sử dụng jquery để tìm một div bên trong iframe. Có cách nào tốt hơn cái tôi đang sử dụng dưới đây không?Cách tìm div bên trong iframe

$('#Iframe').contents().find('#MyDiv') 

function atmslidein(){ 
    $("#customer").ready(function(){   
     if($('#customer').attr('src')=='ATM.html') 
     { 
      $('#customer').contents().find('.atm_page').css('margin-left', '270px'); 
      $('#customer').contents().find('.tele').css('display', 'none'); 
     } 
    }) 
} 

Tôi đã thử gần một tuần để làm công việc này:

$('#Iframe').contents().find('#MyDiv') 

Đó là lý do tại sao tôi đã cố gắng một cách khác để truy cập div của iframe.


Dù sao tôi thấy cái gì mà tài liệu iframe nên có và chỉ khi đó các chức năng trên hoạt động đúng:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

Vấn đề của tôi được giải quyết, cảm ơn. Nhưng ai đó có thể giải thích tại sao điều này là cần thiết?

+3

Có gì sai với cách mà ? – lonesomeday

+0

Tại sao không '$ ('# IFrame #MyDiv')'? –

+0

@Polybos Đó là một tài liệu khác, vì vậy sẽ không được tìm thấy với bộ chọn đó. – lonesomeday

Trả lời

13

Tôi không nghĩ rằng jQuery có thể truy cập nội dung của ContentWindow/Document theo cách đó. Trong quá khứ, tôi đã phải làm điều này:

$('#iframe').each(function() { 
    $('#MyDiv', this.contentWindow.document||this.contentDocument); 
}); 

** Lưu ý rằng this.contentWindow||this.contentDocument là cần thiết để làm việc một cách chính xác trên IE và hầu hết các trình duyệt khác. Khi bạn nhận được cửa sổ nội dung, bạn cần phải chọn tài liệu. Sau đó, bạn có thể sử dụng jQuery để thao tác hoặc duyệt DOM, nhưng chỉ khi nguồn của khung nội tuyến nằm trong cùng một miền.

** Đã cập nhật để sửa lỗi mà chúng tôi không chỉ định tài liệu sau khi chúng tôi nhận được contentWindow/Document.

+1

Điều đó sẽ là 'this.contentWindow.document', tôi nghĩ vậy. – lonesomeday

+0

Bạn nói đúng, cảm ơn. – HackedByChinese

+0

cảm ơn vì giải pháp của bạn. nhưng nó không hoạt động trong mycase – rajaishbt

4

này sẽ chỉ làm việc nếu nguồn khung nội tuyến là trong lĩnh vực tương tự như trang của bạn, nếu không phải là trình duyệt sẽ không cho phép điều đó vì những lý do an ninh

-1

Sử dụng selector bối cảnh:

var frame = $('#frame_id'); 
var div = $('#mydiv', frame); 
+3

jQuery không thể duyệt trực tiếp tài liệu nội dung của khung nội tuyến, do đó, điều này sẽ không hoạt động. – HackedByChinese

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