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令牌发送到主页,验证其来源
- 主页在收到令牌后关闭第个窗口
我尝试过使用基于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()是一个函数,但它不能告诉我们调用它是否有效。。。