[javascript] Postmessage를 이용한 데이타 통신 updated_at: 2024-12-14 09:55

Postmessage 를 이용한 데이타 통신

postmessage 부모창에서 자식창(팝업창)으로 데이타를 보낼 수 있는 유용한 방식입니다.
부모창에서는 Postmessage를 이용하여 데이타를 보내고 자식창에서는 addEventListener를 이용하여 데이타를 수신하는 방식인데 Angular에서의 Subject 등을 활용한 데이타 통신과 유사합니다.

  • 부모창

부모창에서는 팝업창을 열고 그 자식창에 postMessage 를 이용하여 데이타를 전송

<button onclick="openWindow()">Open</button>
<button onclick="add()">Add</button>
<button onclick="subtract()">Subtract</button>

<script>
  let target
  function openWindow() {
    target = open('./child.html', 'Display', 'popup')
  }

  function add() {
    target.postMessage({type: 'add', 'message': 'OK'})
  }

  function subtract() {
    target.postMessage({type: 'subtract', 'message': 'Fail'})
  }
</script>
  • 자식창

자식창에서는 addEventListener를 이용하여 데이타를 수신

<h1>0</h1>

<script>
  const viewEl = document.querySelector('h1')
  let count = 0
  function updateCount(count) {
    viewEl.textContent = count
  }

  window.addEventListener('message', (message) => {
    console.log(message.data);
    if (message.data.type === 'add') {
      updateCount(++count)
    } else {
      updateCount(--count)
    }
    console.log(message.data.message )
  })
</script>
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글