这个问题让我发疯,我有一个通过.asp页面引用的应用程序,在其中一个页面中有一个用于打开弹出窗口的javascript函数
window.open("popup.aspx", "myPopup","width=300,height=100,status=no,toolbar=no,menubar=no,scrollbars=no,resizable=no,alwaysLowered=yes,location=no,directories=no,titlebar=no");
查看各种文档已经声明,如果使用相同的窗口名称,则将重新使用此窗口。这在大多数用户的IE上是正确的,但在某些最终用户PC上,即使使用相同的代码,它也会打开一个额外的弹出窗口。
为了验证这一点,我创建了一个test.aspx并简单地复制了之前声明的open函数。在我的电脑上,我有一个弹出窗口,有些用户有两个。它绝对是这台PC上的Internet Explorer,因为我安装了Firefox并且没有问题,并且引用了相同的窗口。 IE(11)版本全部相同。
有什么问题??
答案 0 :(得分:0)
将打开窗口的对象引用保存到全局变量并在调用window.open之前进行验证:
var windowObjRef = null; // global variable
if(windowObjRef== null || windowObjRef.closed)
{
windowObjRef = window.open("popup.aspx", "myPopup","width=300,height=100,status=no,toolbar=no,menubar=no,scrollbars=no,resizable=no,alwaysLowered=yes,location=no,directories=no,titlebar=no");
}
else
{
windowObjRef.focus();
}