我面临的问题就像标题所描述的那样。我正在使用Facebook身份验证(使用JavaScript SDK),因此用户可以登录我的应用程序,它可以正常使用Chrome UNTIL Chrome 59(最新版本)。
在Chrome 59(58,57,...)之前,当用户尝试登录时,将打开Facebook弹出窗口并发出Facebook凭据请求。但是,在Chrome 59而不是弹出窗口中,会打开一个新选项卡。问题是该选项卡不是焦点,用户没有看到它被打开,或者有时它被打开并且无限加载。
其他人是否面临这个问题?如果是,有任何解决方法吗?
谢谢!
解决
答案 0 :(得分:3)
Chrome 59似乎在location=yes
中处理window.open
现在有所不同。我认为这是一个错误,因为Chrome无论如何都显示了位置栏,我找不到关于此的更改日志条目。
因此,如果您对弹出窗口的打开方式有任何影响,请立即将其更改为location=no
作为解决方法。
// Opens as new tab in Chrome 59
// Older versions and all other browsers open it as popup
window.open("https://www.facebook.com","","location=yes")
// Opens as popup also in Chrome 59
// Chrome, Firefox and Edge show location bar regardless; IE shows URL in title
window.open("https://www.facebook.com","","location=no")
自己测试:http://output.jsbin.com/hikeleyiwe
正如Raul Mangolin指出的那样,Facebook意识到了这个问题:https://developers.facebook.com/bugs/470345923308265/
答案 1 :(得分:1)
如果"location"
或"toolbar"
设置为"yes"
,则在Chrome 59中,它会打开新标签而不是弹出窗口。
只需将它们设置为"no"
,就像这样:
"location=no, toolbar=no"
还有一个更简单的解决方案 - 根本不要包含这些语句,然后弹出将打开而不是新标签。