아이프레임은 기본적으로 로드를 호스트하는 페이지에 정적인 높이값을 지니게 됩니다. 로드되는 페이지의 높이에 맞춰 값을 조정하기 위해서는 별도의 자바스크립트 코드가 필요합니다.
Same-Domain Iframes
동일한 도메인 iframe의 경우 상위 페이지에서만 코드 변경이 필요합니다. iframe 페이지에는 코드 변경이 필요하지 않습니다.
- iframe이 로드된 후 contentDocument.body.scrollHeight 속성은 전체 높이를 가져 옵니다.
- contentDocument.body.scrollWidth 속성은 전체 넓이를 가져 옵니다.
<iframe src="child.html" id="child-iframe"></iframe>
<script>
let iframe = document.querySelector("#child-iframe");
iframe.addEventListener('load', function() {
iframe.style.height = iframe.contentDocument.body.scrollHeight + 'px';
iframe.style.width = iframe.contentDocument.body.scrollWidth + 'px';
});
</script>
Cross-Domain Iframes
크로스 도메인 iframe의 경우 iframe과 상위 페이지 모두 코드를 수정 해야합니다.
iframe이 로드된 후 사이즈는 postMessage()를 사용하여 상위 페이지로 전달됩니다 .
window.addEventListener('load', function() {
let message = { height: document.body.scrollHeight, width: document.body.scrollWidth };
window.top.postMessage(message, "*");
});
상위 페이지에서 메시지가 수신되고 iframe 사이즈가 업데이트 됩니다.
<iframe src="https://cross-domain.com/child.html" id="child-iframe"></iframe>
<script>
let iframe = document.querySelector("#child-iframe");
window.addEventListener('message', function(e) {
let message = e.data;
iframe.style.height = message.height + 'px';
iframe.style.width = message.width + 'px';
} , false);
</script>
jQuery iFrame Resizer 플러그인
'Javascript' 카테고리의 다른 글
javascript 미디어 쿼리 사용 방법 matchMedia() (0) | 2021.04.18 |
---|---|
javascript 브라우저 크기 화면 해상도 구하기 (넓이, 높이) (0) | 2021.04.18 |
javascript 배열안에 객체들 중 속성과 매칭되는 값 찾기 (0) | 2021.04.16 |
javascript 문자열 특정 위치 찾기 (0) | 2021.04.14 |
javascript 문자열 마지막 콤마(쉼표) 삭제 제거 (0) | 2021.04.14 |
개의 댓글