日期:2014-05-17  浏览次数:20409 次

关于showModalDialog()对话框点击按钮弹出新页面的问题
我用ShowModalDialog()生成一个模态对话框,对话框里面添加了一些button,并且在<head></head>之间写了
<base target="_self"/>,在点击button后还会弹出新的空白页面和一个与模态对话框内容一样的大页面?
求高手

------解决方案--------------------
记得 两个页面都要回发 不然就无效的
C# code

protected void btnQuery_Click(object sender, EventArgs e)
{
    Response.write("<script language='javascript'>var result = window.showModalDialog('Test.aspx',window,'dialogHeight:100px;dialogWidth:200px;');if(result==1){ window.location.reload();}</script>");
}

------解决方案--------------------
这个问题可以通过使用为弹出子页面添加一个过渡frame页面来解决,比如说,弹出的页面是test.aspx,那么可建立一个testframe.aspx页面,其html代码为:
<frameset rows="0,100%" border="0" frameSpacing="0" frameBorder="0">
<frame src="about:blank">
<frame src="test.aspx">
</frameset>
那么相应的主页面打开js应该写成:window.showModalDialog('testframe.aspx',等等);
相应的test.aspx的关闭js代码写成:window.parent.close(),如果从父页面传值到子页面或子页面返回值到主页面也分别要使用window.parent.dialogArguments和window.parent.returnValue方法
返回刷新页面,可通过判断window.parent.returnValue是否为null,如果不为空,则可以js执行隐藏button的submit方法达到刷新页面的效果
话说回来,现在第三方模态对话框控件很多的,Jqury UI、Devexpress等等,不一定要使用这种方法