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

时间:2013-10-08 01:58:48

标签: javascript redirect popup same-origin-policy

我做一个window.open(popupURL)来制作一个弹出窗口。弹出窗口重定向到其他重定向回我站点的站点。我使用window.setInterval()来查看弹出窗口何时返回我的网站。但我找不到一种优雅地观察这种状况的方法。例如,评估表达式

对我来说是有意义的
popup.document.domain === window.document.domain

但似乎我不允许阅读popup.document,因为它给出了一个错误,即当弹出窗口使用HTTPS时,开启者正在使用HTTP。我想也许我可以以某种方式使用popup.location,以避免要求那个敏感的外国文件,但试图从popup.location中读取任何内容会产生类似的错误。我甚至不被允许阅读popup.location.protocol!外国网站对HTTP与HTTPS的选择真的是一个大秘密吗?

无论如何,我可以通过在空的catch块中吞下这些错误来解决这些问题。然后我的域名检查似乎工作。但有没有一种方法不涉及丑陋的捕获块?

1 个答案:

答案 0 :(得分:0)

如何向窗口添加两个函数A.将触发onload的函数,它将调用另一个可以执行任何操作的函数。一旦弹出窗口从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 }