2009-11-25 47 views
85

Tôi làm cách nào để truy cập nội dung của khung nội tuyến bằng jQuery? Tôi đã cố gắng làm điều này, nhưng nó sẽ không làm việc:Cách truy cập nội dung của khung nội tuyến bằng jQuery?

nội dung iframe:<div id="myContent"></div>

jQuery:$("#myiframe").find("#myContent")

Làm thế nào tôi có thể truy cập myContent?


Similar tojquery/javascript: accessing contents of an iframe but the accepted answer is not what I was looking for.

+0

Tôi chỉ thấy rằng biến $ built trong bảng điều khiển Firefox không giống như một jQuery hoàn chỉnh. (Tôi đã tìm ra điều này sau khi nhận ra rằng tôi không có biến jQuery, sau đó cho rằng tôi không tải mã nguồn của jQuery). –

Trả lời

160

Bạn phải sử dụng các contents() phương pháp:

$("#myiframe").contents().find("#myContent") 

Nguồn: http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/

+3

cho tôi lỗi: Lỗi: Quyền bị từ chối truy cập thuộc tính 'ownerDocument' –

+22

ime: Có thể nó cho bạn lỗi vì các lý do sau: 1) Khung nội tuyến không thuộc cùng một tên miền. 2) Bạn đang cố đọc nó trước sự kiện Tải khung nội tuyến. – iMatoria

+0

Có cách nào để xác minh xem nội dung iframe có thuộc cùng một tên miền hay không, trước khi cố gắng truy cập và nhận được lỗi? – Kamafeather

15
<html> 
<head> 
<title></title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> 
<script type="text/javascript"> 

$(function() { 

    //here you have the control over the body of the iframe document 
    var iBody = $("#iView").contents().find("body"); 

    //here you have the control over any element (#myContent) 
    var myContent = iBody.find("#myContent"); 

}); 

</script> 
</head> 
<body> 
    <iframe src="mifile.html" id="iView" style="width:200px;height:70px;border:dotted 1px red" frameborder="0"></iframe> 
</body> 
</html> 
12

Nếu nguồn iframe là một miền bên ngoài, trình duyệt sẽ ẩn nội dung iframe (Chính sách xuất xứ giống nhau). Một cách giải quyết là tiết kiệm các nội dung bên ngoài trong một tập tin, ví dụ (trong PHP):

<?php 
    $contents = file_get_contents($external_url); 
    $res = file_put_contents($filename, $contents); 
?> 

sau đó, có nội dung tập tin mới (string) và phân tích nó sang HTML, ví dụ (trong jquery):

$.get(file_url, function(string){ 
    var html = $.parseHTML(string); 
    var contents = $(html).contents(); 
},'html'); 
Các vấn đề liên quan