如何检测浏览器是否支持window.close

How to detect whether a browser supports window.close?

本文关键字:是否 支持 window close 浏览器 何检测 检测      更新时间:2023-09-26

我正在构建一个应用程序,其中认证流程如下

  • 用户点击登录按钮
  • 打开登录窗口。
  • 根据窗口的查询字符串,用户被重定向到Facebook、Google或Twitter。
  • 当用户从fb/google/twitter返回时,我的后端生成一个认证令牌,并且弹出窗口使用postMessage将认证令牌发送到主页,验证起源
  • 主界面收到令牌后关闭窗口。

这个流程在桌面设备上工作得很好,但在移动浏览器上就不行了。打开将打开一个不能以编程方式关闭的新选项卡。

在移动设备上,我可以将用户重定向到登录屏幕,并将其发送回哈希片段中的认证令牌(oauth2隐式流),但我只想在必要时这样做。我如何检测是否窗口。关闭工作没有浏览器嗅探?

我已经试过了

我已经尝试使用基于HTML/JS的模态对话框与iframe在它,但谷歌的登录页面不允许嵌入它在iframe,我没有尝试与其他提供商

可以检查对象检测是否支持window.close():

if (window.close) {
    alert ('window close is supported');
}

执行不带括号()的检查,因为您不想执行该函数,但要检查函数/对象是否存在