如何保证命名弹出窗口关闭,以便可以创建具有相同名称的新窗口?

时间:2010-06-28 21:36:54

标签: javascript html internet-explorer

使用Internet Explorer(似乎在FireFox中没有问题)以下代码偶尔会引发

Error: Access is denied. 
Code: 0

有问题的行是第二个window.open。

currentDialog = window.open("error.html", name, "width=20 height=20 left=50 top=70", true);
if (currentDialog != null)
  currentDialog.close();

currentDialog = window.open("about:blank", name, "width=20 height=20 left=50 top=70", true);

但是,如果引入延迟 - 不确定实际需要多长时间或一致性 - 那么第一个窗口将打开和关闭,第二个窗口将成功打开。

currentDialog = window.open("error.html", name, "width=20 height=20 left=50 top=70", true);
if (currentDialog != null)
  currentDialog.close();

//Small delay to allow slow addons enough time to process OnLoad/OnQuit() 
var date = new Date(); 
var curDate = null; 

do { curDate = new Date(); } 
while(curDate-date < 300); 

currentDialog = window.open("about:blank", name, "width=20 height=20 left=50 top=70", true);

不高兴有一段随机的时间。

是否有其他方法可以确保currentDialog.close();在正确处理之前不会返回,以便可以在如上所示的相同功能中成功创建具有相同名称的新窗口?

背景

该窗口用于显示应该是模态的特殊选择对话框。要在onfocus创建窗口时获取模态,并添加onunload事件,以便在焦点更改为主页面时,焦点将重新设置到选择对话框,如果主页面关闭,则模式对话框将关闭。

当快速浏览选择器时,有时会在尝试挂钩第二个对话框后发生第一个对话框的取消,因此对话框没有适当的模态操作。

或许更好的解决方法: 是否有一些替代方法可以获得此模态对话框操作并避免“创建”中间错误页面?

1 个答案:

答案 0 :(得分:0)

找到一个很好的简单答案

while(!currentDialog.closed);