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

时间:2015-08-06 15:45:39

标签: javascript web

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

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

此流程适用于桌面设备,但不适用于移动浏览器,其中window.open打开一个无法以编程方式关闭的新选项卡。

在移动设备上,我可以将用户重定向到登录屏幕,然后使用散列片段中的auth令牌将其发回(oauth2隐式流),但我只想在必要时执行此操作。如何在没有浏览器嗅探的情况下检测window.close是否正常工作?

我尝试了什么

我尝试使用基于HTML / JS的模式对话框,其中包含iframe,但Google的登录页面不允许将其嵌入到iFrame中,我还没有尝试过与其他提供者

1 个答案:

答案 0 :(得分:1)

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

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

进行无括号()的检查,因为您不想执行该功能,但想检查功能/对象是否存在。