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

时间:2015-07-07 21:36:36

标签: javascript android

我们有一个响应式网络应用程序,可在所有最新的各种桌面和移动浏览器上运行。使用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 / etc帐户登录用户。

我做了一些研究并尝试将fullscreen=yesdialog=no添加到window.open()来电的features parameter,但这些都没有效果。我还通过删除width=nnnheight=nnn功能设置(允许浏览器假定新窗口的完整可用屏幕大小)简单地使其工作,但这在一天之后神秘地停止工作或两个,事实上,我仍然在BrowserStack看到不一致的结果。

确切的功能字符串是:

"location=no,menubar=no,scrollbars=yes,resizable=yes,status=no,toolbar=no"

fullscreendialogwidthheight设置的各种排列/遗漏。

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

1 个答案:

答案 0 :(得分:0)

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

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

这似乎适用于Android(4.4)。