2009-03-31 38 views
7

thể trùng lặp:
Resizing an iframe based on contentiframe Thay đổi kích thước để phù hợp với nội dung của nó

Tôi có một iframe nơi src là một file HTML và iframe này được đặt bên trong usercontrol:

<iframe frameborder="0" src="CName.htm" align="left" width="730" height="1100" ></iframe> 

Tôi cần khung nội tuyến để thay đổi kích thước theo nội dung sao cho chiều cao của nó được đặt theo ieght của tệp HTML và tôi không cần sử dụng thuộc tính cuộn. Bạn có ý tưởng gì không?

+0

Xem http://stackoverflow.com/questions/153152/resizing-an-iframe-based-on-content –

+1

Câu trả lời được liên kết đó vô vọng đã lỗi thời, xem https://github.com/davidjbradshaw/iframe- resizer cho một giải pháp đơn giản hơn nhiều. – user2684310

Trả lời

0

Bạn có thể tìm hiểu chiều cao và chiều rộng của nội dung bên trong khung, sau đó gọi hàm nằm trên chủ sở hữu khung để đặt chiều cao và chiều rộng của phần tử iframe.

+3

Điều này sẽ chỉ hoạt động nếu iframe và cha mẹ của nó không vi phạm chính sách cùng nguồn gốc. – nickh

0

Có một cách! Của nó trong jquery và quá đơn giản của nó. Kinda hacky ..

$('iframe').contents().find('body').css({"min-height": "100", "overflow" : "hidden"}); 
setInterval("$('iframe').height($('iframe').contents().find('body').height() + 20)", 1); 

Có bạn!

Chúc mừng! :)

+0

'+ 20' là gì? –

19

Tôi đã sử dụng mã jQuery sau đây để làm điều này:

$('#iframe_id').load(function() { 
    $(this).height($(this).contents().height()); 
    $(this).width($(this).contents().width()); 
}); 

Tôi không nghĩ rằng điều này sẽ có tác dụng nếu các nội dung iframe là cross-domain, mặc dù.

+0

Để thực hiện tên miền chéo, bạn cần phải sử dụng API postMessage cho điều này, bạn cũng cần phải kiểm tra các sự kiện thay đổi kích thước cửa sổ và các đột biến DOM, để iFrame giữ nguyên kích thước của nội dung. Kiểm tra thư viện này trông coi tất cả những điều này cho bạn. https://github.com/davidjbradshaw/iframe-resizer –

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