在Android浏览器中打开一个新的全尺寸窗口



我们有一个响应式web应用程序,旨在运行在所有最新的各种桌面和移动浏览器。我们在使用window.open()打开新窗口时遇到了最新的Android默认浏览器(Samsung Galaxy S5, Android 4.4)的问题。浏览器似乎将任何这样的窗口视为"弹出"窗口(或"对话框"窗口或"子窗口")。这是一个问题,如果该窗口反过来试图使用window.open()打开另一个窗口,在这种情况下,浏览器给出消息:

Pop-up already open
Only one pop-up can be open at a time

此行为在以前的(4.3)浏览器版本中不存在,我们在其他浏览器平台上也没有看到此问题。

这是一个特别棘手的问题,因为第二个"弹出"窗口需要通过他的Facebook/Google/等帐户登录用户。

我做了一些研究,并尝试将fullscreen=yesdialog=no添加到window.open()调用的特征参数中,但这些都没有效果。我还通过删除width=nnnheight=nnn功能设置(允许浏览器假设新窗口的全部可用屏幕尺寸)使其工作,但这在一两天后神秘地停止工作,事实上,我仍然看到BrowserStack上不一致的结果。

确切的特征字符串是:

"location=no,menubar=no,scrollbars=yes,resizable=yes,status=no,toolbar=no"
fullscreen, dialog, widthheight设置的各种排列/省略 。

有人知道如何一致强制创建全屏非弹出窗口在这个设备上吗?是否有可能这只是一个BrowserStack问题?(由于显而易见的原因,我们不能配置或更改用户的浏览器,因为我们有成千上万的用户管理他们自己的设备。)

在测试了各种功能组合后,我们选择的解决方案是在打开新窗口时简单地忽略所有功能(即提供一个空的功能字符串)。

var w = window.open(url, "foo", "");    // Empty 3rd param

最新更新