<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Cross Document Messaging</title>
  <style>
    section {
      width: 400px;
      padding: 20px;
      margin-bottom: 10px;
      border: 1px solid #999999;
    }
  </style>
  <script>
    let popup, port;
    function initiate() {
      const button = document.getElementById("button");
      button.addEventListener("click", send);

      const openbutton = document.getElementById("openbutton");
      openbutton.addEventListener("click", function() {
        popup = window.open("popup.html", "popup", "width=400,height=200");
      });
      window.addEventListener("message", connect);
    }
    function connect(event) {
      if (event.data == "init") {
        port = event.ports[0];
        port.addEventListener("message", receiver);
        port.start();
      }
    }
    function send() {
      const message = document.getElementById("message").value;
      port.postMessage(message);
    }
    function receiver(event) {
      const databox = document.getElementById("databox");
      databox.innerHTML += event.data + "<br>";
    }
    window.addEventListener("DOMContentLoaded", initiate);
  </script>
</head>
<body>
  <section id="formbox">
    <form name="form">
      <label for="message">My Message: </label>
      <input type="text" name="message" id="message" required>
      <button type="button" id="button">Send</button>
      <button type="button" id="openbutton">Open Popup</button>
    </form>
  </section>
  <section id="databox"></section>
</body>
</html>