在 Oauth Like Situation [jQuery|] 中收听子窗口关闭事件 Javascript]

tec*_*ani 5 html javascript jquery oauth

我正在使用 oAuth 1.0 访问第 3 方数据。

为此,我正在采取以下步骤:-

  1. 用户点击“与第 3 方同步”按钮。(用户必须单击,因为这通常不会调用弹出窗口阻止程序。)

  2. 当用户单击此按钮时,将执行以下代码:

        $('#sync_with_thirdparty').click(function(){
           var child = window.open('/oauth');
           $(child).unload(function() {
               if (this.location != "about:blank") {
                alert("Child window closed");
            }
          });
        });
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在在新窗口中,PHP 从第 3 方获取身份验证 URL,然后将用户重定向到相同的 URL。一旦用户重定向到第 3 方,上面的代码就会说“子窗口已关闭。”。

  4. 然后用户让自己登录第三方网站(如有必要)并访问我们的应用程序。只要他点击允许按钮,第三方就会将用户重定向到我们网站的新页面。在此页面上,我正在调用 window.close() 方法,该方法工作正常。

  5. 但是在子窗口中的 window.close() 上,父窗口无法知道子窗口已关闭。

我该如何解决这个问题?

注意:第三个不喜欢 Iframe 并刷新自身以在顶部窗口中打开。我对第 3 方的内容没有任何控制权。我们的网页是 HTML5 格式。

sic*_*a07 1

子窗口可以通过window.opener() 函数与父窗口进行通信。你可以这样做:

子窗口

window.opener.messageFromChildWindow('closed');
Run Code Online (Sandbox Code Playgroud)

父窗口

function messageFromChildWindow(msg) {
    if(msg === 'closed') {
        alert('child window closed');
    }
}
Run Code Online (Sandbox Code Playgroud)