2

似乎在尝试从一系列 windows.open 调用中打开 2 个窗口时,它只允许打开第​​一个窗口并删除对第二个窗口的引用。我知道这可能听起来有点笨拙,但我们确实需要第二个弹出窗口。

有任何想法吗?

不幸的是,我们正在解决一个用户案例,其中用户端的 ie6 启用了弹出窗口阻止程序。

4

3 回答 3

2

编辑:我刚刚意识到您可能对两个窗口都使用了空白('')窗口名称:

var win = window.open(url, '', 'blah=1');
var win2 = window.open(url2, '', 'stuff=1'); //later

这可能是通过 IE6 以外的浏览器中的不同窗口处理的。

如果这不起作用,您可能会考虑注入显示在内容顶部的 div(而不是使用弹出窗口),这被认为是一种更好的做法。

于 2010-01-27T02:18:05.743 回答
2

默认情况下,IE 弹出窗口阻止程序只允许每个用户启动的操作(即单击某个元素)打开一个新窗口。如果您尝试在同一处理程序中打开两个新窗口以响应单个用户启动的操作,则只会成功打开第一个窗口。这是设计使然。

有一个用户可以使用的覆盖键:在 IE6 上,我认为它是 CTRL,但它可能是 CTRL+ALT,因为它在以后的版本中发生了变化(不确定它是否被向后移植)。

如果您转到工具-> Internet 选项-> 弹出窗口阻止程序-> 设置-> 阻止级别:并查看“高”下拉框中的值,它将在括号中告诉您覆盖键。

在同一设置对话框中,您还可以将此特定站点添加到“允许的站点”列表中,然后弹出窗口阻止程序将使该站点上的所有新窗口创建尝试成功。我很确定这个列表也可以通过组策略或 IEAK 或类似的东西预先填充。但这只是一个存储在注册表中的列表,因此您也可以编写登录脚本,如果需要添加内容,则只需添加即可。

如果您还有其他问题,请告诉我(我是实现 IE 弹出窗口阻止程序的开发人员)。

于 2010-01-27T17:49:54.197 回答
1

IE6 听起来像是一个企业安装。假设这是真的,请联系您的管理员并让组策略将您的内部网站设置为 Intranet 区域,并关闭该区域的弹出窗口阻止程序。

于 2010-01-27T02:16:03.860 回答