javascript 从弹出窗口获取数据

mlmc2os5  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(291)

我通过google sing在API中验证我的用户。我使用window.open()打开弹出窗口,如下所示:

<button @click="signIn('/google')" class="btn">Sign in with Google</button>

signIn(provider) {
      const strWindowFeatures =
        "toolbar=no, menubar=no, width=600, height=700, top=100, left=100";
      window
        .open(this.baseUrl + provider, "Google", strWindowFeatures)
    }

我的服务器验证了谷歌信息,然后用cookie响应弹出窗口,如下所示:

router.get('/success', isLoggedIn, (req, res) => {
    res.json(req.cookies)
})

如何在父窗口(主应用程序,而不是弹出窗口)中获取JSON?

jvlzgdj9

jvlzgdj91#

主应用程序及其弹出窗口可以通过Window.postMessage()进行通信。
下面是一个主要的例子。html页面,打开弹出窗口。html页面。
main.html

<button id="opener">Open popup</button>
<script>
  document.querySelector("#opener").addEventListener("click", () => {
    window.open("popup.html", "_blank", "popup");
  });

  window.addEventListener(
    "message",
    (event) => console.log("event received: ", event),
    false
  );
</script>

popup.html

<button id="send">Send</button>
<script>
  document
    .querySelector("#send")
    .addEventListener("click", () =>
      window.opener.postMessage("hi there !", document.location.href)
    );
</script>

参考文献:

相关问题