在尝试打开模态窗口时,出现了JavaScript错误。

6
该应用程序运行在一个使用asp.net 2.0的Windows Server 2003服务器上,是一个IE特定的Web应用程序。有一个按钮,通过JavaScript中的showModalDialog(...)函数调用打开一个iframe中的表单。
以下是该函数的示例:
    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错误:
错误:对象不支持此属性或方法
奇怪的是,如果我本地访问应用程序并尝试它,一切正常,但从另一台计算机访问会导致错误。此外,根据服务器(我们有许多服务器用于测试,所有服务器均使用Windows Server 2003)的不同,该错误在另一台计算机上可能不会发生。这些计算机正在运行相同的软件版本,使用相同版本的IE和相同的设置。我倾向于认为某个配置问题存在,但是由于设置相同,很难确定。我也不能真正改变应用程序的工作方式或使用的技术。
有人有任何关于可能导致此问题的想法吗?
1个回答

9
问题出在客户端机器上IE的弹出窗口拦截器。由于模态窗口是在另一个模态窗口中打开的,因此弹出窗口拦截器认为它不属于父级,并认为应该阻止它。在将该站点添加到弹出窗口拦截器后,一切正常。
多么荒谬啊!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接