2010-04-15 102 views
6

该应用程序使用asp.net 2.0在Windows Server 2003盒子上运行,并且是IE特定的Web应用程序。有一个按钮使用来自位于JavaScript中的函数调用的showModalDialog(...)在iframe中打开表单。尝试在模式窗口中打开模式窗口时发生Javascript错误

下面是函数的一个例子:

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

} 

主机帧被加载包含正在使用的实际形式aspx页。在打开的窗体上有一个按钮,单击它时将提交更改为窗体。但是,如果在提交表单之前未做任何更改,则会弹出另一个模式窗口,指出表单没有更改。这个模式窗口是通过在按钮点击事件中注册一些JavaScript来打开的。代码如下(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); 
     } 

当按钮被点击,该对话框中需要出现出现以下JavaScript错误:

Error: Object doesn't support this property or method

奇怪的是,如果我访问应用程序本地并尝试一切正常,但从另一台计算机访问会导致错误。另外,根据什么服务器(我们有许多服务器用于测试所有的Windows Server 2003),该错误可能不会在另一台计算机上发生。这些计算机使用相同版本的IE以相同的设置运行相同的软件版本。我倾向于认为某处存在某些配置问题,但设置相同时很难说明问题。我无法真正改变应用程序如何工作或使用的技术。

任何人有任何想法可能是什么原因造成这种情况?

回答

9

问题出在客户机上IE中的弹出窗口阻止程序。由于模式窗口正在另一个模式窗口中打开,因此弹出窗口阻止程序不会将其视为父项的一部分,并认为它应该阻止它。将该网站添加到弹出式窗口拦截器后,所有工作。

多可笑!