使用window.open后从回调重定向到父URL

时间:2019-06-17 12:35:18

标签: javascript html angularjs

我正在尝试将回调URL重定向回调用window.open的父窗口。当前,回调URL正在从父窗口派生的子窗口内打开。

父窗口=>打开子窗口进行身份验证=>用户进行身份验证并重定向到该子窗口。如何重定向到父窗口?

这是对window.open的调用

newwindow = window.open(response.data.auth_url,'Etsy','height=800,width=1000');
if (window.focus) {
    newwindow.focus()
}

有什么想法要实现吗?

2 个答案:

答案 0 :(得分:0)

要在Windows之间进行通信,请使用Postmessage

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

您的情况可能是子窗口将消息发送到父窗口,然后该消息又关闭了子窗口并重定向到最终URL。

答案 1 :(得分:0)

如果有人遇到此问题,这是我想出的解决方案。

在我的angularJS控制器文件中,我从回调URL中检查所需的两条信息:

win = window.open(response.data.auth_url,'Etsy','height=800,width=1000'); 

var pollTimer = window.setInterval(function() { 
    try {
        if (win.document.URL.indexOf(response.data.callback_url) != -1) {

            window.clearInterval(pollTimer);

            $state.go("etsy.connected");

         }
     } catch(e) {
           // Error Handling            
     }
}, 500);

我也进行轮询以查看何时创建回调URL并重定向父窗口

var chrt = !this.chart ? this : this.chart;