2010-04-15 9 views
6

L'application s'exécute sur une machine Windows Server 2003 en utilisant asp.net 2.0 et est une application web spécifique à IE. Il y a un bouton qui ouvre un formulaire dans un iframe en utilisant showModalDialog (...) à partir d'un appel de fonction situé dans le JavaScript.Erreur Javascript lors de la tentative d'ouverture d'une fenêtre modale dans une fenêtre modale

Voici un exemple de la fonction:

function ShowBusinessHoursSubForm(source) 
{ 
    var retval = window.showModalDialog("htm/" + locLocaleID + "/SubFormHostFrame.htm", source, "dialogWidth:265px;dialogHeight:261px;help:no;scroll:no;status:no;"); 

} 

Le cadre de l'hôte est le chargement d'une page aspx qui contient la forme réelle qui est utilisée. Sur le formulaire qui est ouvert, il y a un bouton qui, lorsqu'on clique dessus, envoie les modifications au formulaire. Cependant, si aucune modification n'a été apportée avant la soumission du formulaire, une autre fenêtre modale s'affiche indiquant que le formulaire n'a pas été modifié. Cette fenêtre modale est ouverte via l'enregistrement de JavaScript dans l'événement click button. Le code est le suivant (C#):

string l_S_ErrorScript = "<script type='text/javascript' language='javascript'>window.showModalDialog('htm/" + l_S_Culture + "/NotChangedErrorDialog.htm', '../../" + l_S_SkinPath + "', 'dialogWidth:310px;dialogHeight:145px;scroll:no;help:no;status:no;');</script>"; 

if(!m_Page.ClientScript.IsStartupScriptRegistered("ErrorScript")) 
     { 
      m_Page.ClientScript.RegisterStartupScript(this.GetType(), "ErrorScript", l_S_ErrorScript); 
     } 

Lorsque le bouton est cliqué et cette boîte de dialogue doit apparaître l'erreur JavaScript suivant apparaît:

Error: Object doesn't support this property or method

La chose étrange est, si j'accéder à l'application localement et essayez-le tout fonctionne bien, mais l'accès à partir d'un autre ordinateur provoque l'erreur. En outre, en fonction de quel serveur (nous avons beaucoup de serveurs pour tester tous avec Windows Server 2003) l'erreur peut ne pas se produire sur un autre ordinateur non plus. Ces ordinateurs exécutent la même version du logiciel en utilisant la même version d'Internet Explorer avec les mêmes paramètres. Je suis enclin à croire qu'il y a un problème de configuration quelque part, mais avec les réglages étant les mêmes, c'est difficile à dire. Je ne peux pas vraiment changer le fonctionnement de l'application ni les technologies utilisées.

Quelqu'un at-il des idées sur ce qui peut être à l'origine de cela?

Répondre

9

Le problème résidait dans le bloqueur de fenêtres contextuelles dans IE sur l'ordinateur client. Étant donné que la fenêtre modale était ouverte dans une autre fenêtre modale, le bloqueur de fenêtres contextuelles ne la considérait pas comme faisant partie du parent et pensait qu'elle devrait la bloquer. Après avoir ajouté le site au bloqueur de popup, tout a fonctionné.

Comme c'est ridicule!

Questions connexes