检查弹出窗口是否已重定向回 JavaScript 中的打开程序的域/端口/协议
Checking that popup has redirected back to opener's domain/port/protocol in JavaScript
我做了一个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 }
相关文章:
- 是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求
- Twitter引导程序在下拉列表打开时停止传播
- 用Chrome检测Windows8+中的自定义协议处理程序
- Chrome应用程序可以注册协议处理程序吗
- 请求特定的外部协议时是否可以打开Chrome扩展程序
- 如何使用其他协议打开路由
- 检查弹出窗口是否已重定向回 JavaScript 中的打开程序的域/端口/协议
- 注册协议处理程序和服务工作者
- 无法在“导航器”上执行“注册协议处理程序”:方案“消息”不属于方案白名单
- 重新打开程序函数返回类型错误“无法读取 null 的属性'样式'”
- 如何在Node.js中注册url协议处理程序
- 如何断开JavaScript弹出窗口与打开程序的连接
- 打开程序但不运行文件的HTA页面
- 最简单的跨浏览器检查是否注册了协议处理程序
- 注册了协议处理程序,但是从windows注册表读取失败
- 通过web浏览器打开程序
- 无法在Chrome中使用文件协议打开Angular应用程序
- 如何让浏览器从自定义协议打开文件
- 如何打开程序引导移动导航栏
- 通过对服务器的初步 CORS 调用来保证跨域窗口的源(父 URL).打开程序调用