2010-06-28 3 views
0

Utilisation d'Internet Explorer (ne semble pas avoir un problème dans FireFox) le code suivant occassionally soulever uneComment garantir qu'une fenêtre popup nommée est fermée afin qu'une nouvelle fenêtre avec le même nom puisse être créée?

Error: Access is denied. 
Code: 0 

La ligne en question est la deuxième 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); 

Toutefois, si un retard est introduit - pas combien de temps est vraiment nécessaire ou une question de cohérence - alors la première fenêtre ouvre et ferme et la deuxième fenêtre ouvrira avec succès.

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); 

Pas content d'avoir une durée aléatoire. Y a-t-il un autre moyen de s'assurer que currentDialog.close(); ne retourne pas jusqu'à ce qu'il soit correctement éliminé de sorte qu'une nouvelle fenêtre portant le même nom puisse être créée avec succès dans la même fonction que celle démontrée ci-dessus?

Contexte

La fenêtre est utilisée pour afficher une boîte de dialogue de sélection spéciale qui devrait être modal. Pour obtenir modal lorsque la fenêtre est créée onfocus et onunload événements sont ajoutés de sorte que si le focus change à la page principale le focus est remis à la boîte de dialogue de sélection et si la page principale est fermée alors la boîte de dialogue modale est fermée. Lorsque vous progressez rapidement dans les sélecteurs, le décrochage de la première boîte de dialogue se produit parfois après la tentative d'accrochage de la deuxième boîte de dialogue, et la boîte de dialogue n'a donc pas d'action modale appropriée. Peut-être une meilleure chose à résoudre: Y at-il peut-être une autre façon d'obtenir cette action de dialogue modal et éviter la nécessité de «créer» la page d'erreur intermédiaire?

Répondre

0

trouvé une réponse simple et agréable

while(!currentDialog.closed); 
Questions connexes