서로 다른 도메인을 가진 아이프레임 페이지를 부른 후 높이값을 맞춰주고 싶은데,
top.document, parent.frame 등과 같이 직접 접근이 불가하다.
이 경우 window.postMessage() method를 사용하면 되는데,
이 method는 윈도우 오브젝트 사이에서 안전하게 cross-origin 통신을 할 수 있게 한다.
아래 예시 코드로 확인해보자.
부모 페이지 (parent-site)
function fn_postMessageController( e ){
if( e.origin === "http://child-site.com" ){
document.querySelector( "#iframe-id" ).setAttribute( "height", parseInt( e.data ) );
}
}
if( window.addEventListener ){
window.addEventListener( "message", fn_postMessageController, true );
} else if( window.attachEvent ){
window.attachEvent( "onmessage", fn_postMessageController );
}
자식 페이지 (child-site)
const contentsHeight = document.querySelector( "#contents" ).offsetHeight;
window.parent.postMessage( contentsHeight, "http://parent-site.com" );
이때 주의할 점은 도메인을 잘 맞춰서 작성해야 한다.
잘 되지 않는 경우 콘솔로 e.origin값을 찍어서 확인해보자.
https://developer.mozilla.org/ko/docs/Web/API/Window/postMessage
728x90
반응형
'WWWEB > Script' 카테고리의 다른 글
[js] keyCode는 그만 쓰자! (0) | 2024.01.16 |
---|---|
타입스크립트 핸드북, 윈터루드님의 (0) | 2023.07.10 |
[ js ] 스크립트 동적 생성하기 (0) | 2023.04.25 |
[ js ] defer vs async (0) | 2023.04.25 |
javascript로 style 삭제 방법 (0) | 2023.01.02 |
[자바스크립트] Keycode 이벤트 코드값 (1) | 2022.12.28 |
slick slider 사용법과 옵션 (0) | 2022.12.28 |
[js] 시크릿 모드 체크하기 예시 (0) | 2022.12.22 |
댓글