The*_*eek 6 javascript showmodaldialog
该应用程序使用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;");
}
Run Code Online (Sandbox Code Playgroud)
主机框架正在加载一个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);
}
Run Code Online (Sandbox Code Playgroud)
单击该按钮并显示此对话框时,将显示以下JavaScript错误:
错误:对象不支持此属性或方法
奇怪的是,如果我在本地访问应用程序并尝试它一切正常,但从另一台计算机访问会导致错误.此外,根据什么服务器(我们有许多服务器用于测试所有与Windows Server 2003),错误可能不会发生在另一台计算机上.这些计算机使用具有相同设置的相同版本的IE运行相同的软件版本.我倾向于认为某处存在一些配置问题,但设置相同则很难说清楚.我无法真正改变应用程序的工作方式或使用的技术.
任何人都有任何想法可能导致这个?
问题出在客户端计算机上的IE中的弹出窗口阻止程序.由于模态窗口是在另一个模态窗口中打开的,弹出窗口阻止程序并不认为它是父窗口的一部分,并认为它应该阻止它.将网站添加到弹出窗口阻止程序后,一切正常.
多么荒谬!