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

Checking that popup has redirected back to opener's domain/port/protocol in JavaScript

本文关键字:协议 打开程序 JavaScript 端口 窗口 是否 重定向 检查      更新时间:2023-09-26

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

popup.document.domain === window.document.domain

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

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

如何向窗口 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 }