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

Javascript 如何检测浏览器是否支持window.close?,javascript,web,Javascript,Web,我正在构建一个应用程序,其中身份验证流程如下 用户单击登录按钮 将打开一个登录窗口 用户被重定向到Facebook、Google或Twitter,具体取决于窗口的查询字符串 当用户从fb/google/twitter返回时,我的后端会生成一个auth令牌,弹出窗口使用postMessage将auth令牌发送到主页,验证其来源 主页在收到令牌后关闭第个窗口 这个流程在桌面设备上非常有效,但在移动浏览器中不行,因为window.open会打开一个无法以编程方式关闭的新选项卡 在移动设备上,我可以

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

  • 用户单击登录按钮
  • 将打开一个登录窗口
  • 用户被重定向到Facebook、Google或Twitter,具体取决于窗口的查询字符串
  • 当用户从fb/google/twitter返回时,我的后端会生成一个auth令牌,弹出窗口使用postMessage将auth令牌发送到主页,验证其来源
  • 主页在收到令牌后关闭第个窗口
这个流程在桌面设备上非常有效,但在移动浏览器中不行,因为window.open会打开一个无法以编程方式关闭的新选项卡

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

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

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

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

检查时不要使用paradensis
()
,因为您不想执行函数,而是想检查函数/对象是否存在。

使用jquery或其他js框架对话框,而不是windows或弹出窗口。问题是在登录过程中,我重定向到Google、Facebook或Twitter。谷歌的登录页面不希望嵌入iframe中。我已经试过了,不过还是谢谢你的回答,@Jkike@Jkike有时弹出窗口是正确的解决方案。听起来可能是在这种情况下。@j08691只有在浏览器中未定义window.close时才起作用,对吗?但如果他必须在移动环境中使用它,则总是会导致问题:(谷歌没有用于登录的api吗?桌面chrome说window.close()是一个函数,但它不能告诉我们调用它是否有效。。。