检查弹出窗口是否已重定向回opener';JavaScript中的s域/端口/协议

检查弹出窗口是否已重定向回opener';JavaScript中的s域/端口/协议,javascript,redirect,popup,same-origin-policy,Javascript,Redirect,Popup,Same Origin Policy,我打开一个窗口。打开(popupupurl)弹出一个窗口。弹出窗口重定向到某个其他站点,该站点重定向回我的站点。我使用window.setInterval()监视弹出窗口何时返回到我的站点。但我找不到一种方法来优雅地观察这种情况。例如,对我来说,计算表达式是有意义的 popup.document.domain === window.document.domain 但我似乎不允许阅读popup.document,因为它给了我一个错误,与以下事实有关:当弹出窗口使用HTTPS时,打开程序正在使用H

我打开一个
窗口。打开(popupupurl)
弹出一个窗口。弹出窗口重定向到某个其他站点,该站点重定向回我的站点。我使用
window.setInterval()
监视弹出窗口何时返回到我的站点。但我找不到一种方法来优雅地观察这种情况。例如,对我来说,计算表达式是有意义的

popup.document.domain === window.document.domain
但我似乎不允许阅读
popup.document
,因为它给了我一个错误,与以下事实有关:当弹出窗口使用HTTPS时,打开程序正在使用HTTP。我想也许我可以使用
popup.location
某种方式,以避免请求敏感的外来文档,但尝试从
popup.location
读取任何内容会产生类似的错误。我甚至不允许阅读
popup.location.protocol
!外国网站选择HTTP还是HTTPS真的是一个很大的秘密吗


无论如何,我可以通过在一个空的catch块中吞咽这些错误来绕过这些问题。然后我的域检查上面似乎工作。但是有没有一种方法不涉及丑陋的catch块呢?

在窗口a中添加两个函数如何。一个函数将在加载时触发,它将调用另一个函数,该函数将执行您想要的任何操作。不知道它将如何工作,一旦弹出窗口从B重定向到A-这是如果它将有权访问window.opener虽然

在伪代码中:

//This code will go in the window A, which is also loaded in a popup after a redirect.
window.onload = function(){
  if( window.opener && !window.opener.closed ){//This is to make sure only the popup will call it.
    doSomething();
  }
}

function doSomething(){ //Do soemthing }

正如我所理解的,您有一个站点a,它弹出一个站点B,然后通过SSL重定向到站点a?站点a弹出一个窗口,打开到站点a上的一个页面,最后重定向到站点B,然后再重定向回站点a。所有到站点a的请求都使用HTTP协议。对站点B的一些(可能全部)请求使用HTTPS协议。(另外,我在我的问题中忽略了弹出窗口对A的第一个请求,因为我猜它与问题无关。基本上,我希望在打开的窗口中有一个脚本来检测弹出窗口从B向A的转换……我正在成功地完成这项工作,但我使用了一个catch块,这感觉像是一个潜在的坏黑客。)在类似的事情失败后,我转向了我现在使用的策略。我刚才做了一个小测试,它似乎起作用了。。。我认为在弹出窗口重定向后依赖弹出窗口的开启器是粗略的,有时有效,但有时无效?这就是我当时的印象,从我自己的经验和类似这样的页面: