间歇性地我得到一段时间,调用gapi.auth.authorize导致在我的应用程序窗口 下打开一个帐户选择器窗口,当然用户不会注意到这一点。
有没有办法强迫它在顶部,或者至少检测到它已被打开所以我可以提醒用户?
我目前正在Chrome上测试,但我也在Firefox上看过它。
重新创建......
应该(有时是)的样子......
什么不应该,但有时看起来像......
答案 0 :(得分:0)
我无法通过后台弹出窗口重现您的问题,但我可能会为您提供解决方案。
这是一个黑客,但它避免了直接修改谷歌的代码。
这是重要的部分,下面提供了一个演示。基本上你是覆盖window.open
并在创建后立即关注弹出窗口。打开窗口后,您可以恢复window.open
的默认功能。
function handleAuthClick(event) {
// Hijack window.open
var windowOpen = window.open;
window.open = function(url, name, options) {
var newWindow = windowOpen.apply(this, arguments);
setTimeout(function() {
newWindow.focus();
}, 0);
return newWindow;
};
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthResult);
// Release window.open
window.open = windowOpen;
return false;
}
的演示强>:
http://jsbin.com/sefozinu/1/edit
众所周知,Chrome和FireFox的后续版本不尊重window.focus
。
答案 1 :(得分:0)
我遵循了这些步骤,而且像其他人一样 - 无法重现这一点。 (在Windows 8.1上使用Chrome 34.0.1847.131)
问题可能是浏览器,而不是内容..
它看起来正在使用我不知道的Chrome / Chromium浏览器。看着屏幕截图,我看到窗口左上角有一个足球。你可以指定它,让我们重现吗?
(或者考虑安装新的vanilla,主流Chrome浏览器作为测试基线。)