首页 > 解决方案 > 使用 Javascript/typecript 在弹出窗口中打开网站并在成功登录时关闭

问题描述

我正在尝试从网站 B 获取数据到网站 A。这需要我手动登录到网站 B。我要做的是从 A 打开 B 的弹出窗口,登录到 B 并自动关闭包含 B 的弹出窗口.

问题是 B 和 A 是跨域的,Javascript 具有安全功能,阻止我使用获取网站 B 的当前 URL 的功能,检测 B 的 URL 的变化。

有什么解决方法吗?

我的代码如下:

  private websiteBRedirect(){
    let popupWindow = window.open("websiteB", 'popup','height=' + 600 + ',width=' + 600 + ',resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,location=yes');
    let timer = setInterval(checkChild, 500);
    let url = this.authUrl[0];

    function checkChild() {
      if (popupWindow.closed) {
          window.location.href = url;
          clearInterval(timer);
      }
    }
  }

在这里,我创建了一个名为“popupWindow”的弹出变量,它加载了 websiteB 的登录页面(使用 websiteB 而不是实际的机密网站)。我想检查用户是否已成功登录网站 B,然后关闭弹出窗口。关闭弹出窗口后,如果登录成功,我的代码将我的当前 URL(websiteA)更改为另一个 URL,但遗憾的是我无法测试。

标签: javascripttypescript

解决方案


您可以将 JSONP 用于跨域请求,

JSONP 只是指“带填充的 JSON”。它本质上是一个包裹在 URL 中指定的回调函数的 JSON 响应。例如,下面是一个 JSON 响应。

{ “username”: “sdaityari”, “name”: “Shaumik Daityari”}

回调函数指定为 processData 的相同响应如下。

processData({ “username”: “sdaityari”, “name”: “Shaumik Daityari”})

这应该可以帮助您找出解决问题的方法,因为您没有发布任何我可以使用的代码。


推荐阅读