타 도메인 IFrame 높이 조절하기
2008.11.05
개발 iframe, javascript, resize, 개발 7 Comments
개요
홈페이지를 만들다 보면 IFrame 에 타 도메인의 어플리케이션을 넣어야 하는 경우가 생깁니다. 이런 경우 문제는 IFrame 안에 삽입된 타 도메인의 어플리케이션의 문서가 IFrame 의 높이를 넘어서면 IFrame 에 스크롤바가 생기면서 별로 보기가 좋지 않아집니다. 이 문서에서는 삽입된 어플리케이션 문서의 높이에 따라 IFrame 높이를 적절하게 조절해서 스크롤바를 없애는 방법을 설명합니다.
조건
A 도메인 a.htm 에 삽입된 B 도메인의 b.htm 문서를 수정할 수 있어야 합니다.
해법
해법은 B 도메인의 b.htm 에 A도메인의 다른 페이지 a-1.htm 을 iframe에 삽입하면 삽입된 a-1.htm 에서 a.htm 의자바스크립트 함수를 호출할 수 있다는겁니다.
코드는 아래와 같습니다. ( 방법만 배우시고 코드의 세세한 부분은 무시해주세요
)
A 도메인 a.htm
<iframe src="http://B/b.htm" width="100%" height="400"
id="bFrame" frameborder="0" scrolling="no"></iframe>
function resizeFrameHeight(height) {
document.getElementById('bFrame').style.height = height;
}
B 도메인 b.htm
<iframe src="http://B/b.htm" width="0" height="0"
name="aFrame" frameborder="0"></iframe>
window.onload = function() {
document.aFrame.location.href = 'http://A/a-1.htm?height=' +
document.body.scrollHeight;
}
A 도메인 a-1.htm
var parameter = location.href.split('?')[1];
var height = parameter.split('=')[1];
parent.parent.resizeFrameHeight(height);
RSS
Twitter
Facebook
Flickr
YouTube
Email


11 05, 2008 @ 16:15:32
parent.parent 를 접근하는 방식이 오페라에서는 불가능하더군요.
2 02, 2009 @ 00:48:03
Opera 9 (9.62) 에서는 작동 하는걸 확인했습니다만 …
확인해보시겠어요 ? ^^
11 07, 2008 @ 23:22:23
A도메인을 컨트롤 할수 없을때는 방법이 없을까요?
2 02, 2009 @ 00:48:20
coolengineer 님께서 답변 주신대로 A, B 도메인 모두 제어 가능해야 합니다.
11 08, 2008 @ 12:05:06
hym77/ 방법이 없습니다. 위의 경우 모두 개발자의 컨트롤하에서 일어나는 상황을 가정하고 만드는 것입니다. B 도메인에서 삽입하는 a-1 조차 A에서 제공하는 방법만 사용할 수 있는 상황이니까요.
11 10, 2008 @ 22:03:54
친절한 답변 감사합니다^^