채택완료

아이프레임 자동높이 재질문

2024-01-26 (금) 11:18:45 2,385

부모파일

Copy
<iframe src="01.html" id="myiframe" scrolling="no" width="300"></iframe>
<script type="text/javascript">
  let iframe = document.getElementById('myiframe');
  
  window.addEventListener('message', function(e) {
    let message = e.data;
    iframe.style.height = message.height + "px";
  } , false);
</script>

자식파일 (01.html)

Copy
<script type="text/javascript">
window.addEventListener('load', function() {
  let message = {height: document.body.scrollHeight};    
  window.top.postMessage(message, "*");
});
</script>
 
<div style="height:500px; background:#ccc;">
<a href="02.html">이동</a>
</div>

자식파일 (02.html)

Copy
<script type="text/javascript">
window.addEventListener('load', function() {
  let message = {height: document.body.scrollHeight};    
  window.top.postMessage(message, "*");
});
</script>
 
<div style="height:300px; background:#555;">
<a href="01.html">이동</a>
</div>

main.html 구동시 아이프레임 내에서 링크 이동시, 파일 높이에 맞게 조절이 되지 않습니다.

방법이 있을까요..?

답변 2개

채택된 답변
+20 포인트

부모가 자식의 높이를 인지하면 되지 않을까요?

var iframe = $('iframe').contents().find('body');
var iframe_child_height = iframe.높이;

2024-01-26 (금) 14:43:36

최초 iframe 로드시엔 현재 높이를 부모에 전달하지만

이후 자식 iframe 내에서 링크를 이동할때

이동한 페이지에서는 현재 높이를 부모에게 전달하지 않아서 그렇습니다.

최초 로드시 부모에게 전달하는 코드를 모든 페이지에 넣어주시거나

_head.php 처럼 공통으로 include 하는곳에 넣어주셔야 합니다.

답변을 작성하려면 로그인이 필요합니다.