使用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事件,以便在焦点更改为主页面时,焦点将重新设置到选择对话框,如果主页面关闭,则模式对话框将关闭。
当快速浏览选择器时,有时会在尝试挂钩第二个对话框后发生第一个对话框的取消,因此对话框没有适当的模态操作。
或许更好的解决方法: 是否有一些替代方法可以获得此模态对话框操作并避免“创建”中间错误页面?
答案 0 :(得分:0)
找到一个很好的简单答案
while(!currentDialog.closed);