
회사 프로젝트에서 브라우저에서 조회한 API를 팝업 window에서 사용할 수 있도록 하고 싶은데, 팝업 window에서 해당 API를 조회하지 않고 데이터를 쓰는 방법을 찾다가 발견한게 postMessage 이벤트였다.
부모 window <-> iframe 또는 서로 다른 브라우저 창 처럼 서로 다른 window 컨텍스트간에 message를 주고받는 event이다.
message를 보내는쪽
targetWindow.postMessage(message, targetOrigin);
message를 받는쪽
window.addEventListener("message", (event) => {
// event.data: 전달받은 데이터
// event.origin: 보낸 쪽 오리진
// event.source: 보낸 쪽 window 참조
});
cross-origin 간 postMessage도 가능해서 event.origin이 내가 원하는 origin인지 검증하는게 중요하다.
와우..!! 이런게 가능한줄은 처음알았네여!ㄷㄷ
크..이건 정말 언젠간 필요한 반드시 사용하게 될 기능이네요!
왜 지금에서야 알게 된건지..ㅜ 역시 아직 공부가 많이 부족한 것 같습니다
웹 프로젝트를 진행하는 사람이라면
이런게 가능하다는 것은 반드시 알고 있어야 할 내용이네여..ㄷㄷㄷ
지금까지 제가 알고 있는 지식은
iframe이나 popup 창하고는 통신이 안되거나 첫 페이지를 요청할 때만
원하는 값을 전달할 수 있다고 생각했었는데..
실시간으로 값을 주고 받을 수 있을 줄은...상상도 못했습니다!
지금와서야 이것을 알고 완전 신세계를 느꼈다는 것은 부끄러우려나요?!!ㅎㅎ