在父窗口中用以下语句打开模式窗口
<input id="button" type="button" value="打开模式窗口" onclick="OpenWin('ModalDialog.aspx',500,400)" />
function OpenWin(frmWin,width,height)
{
var obj = new Object();
// 把父页面窗口对象当作参数传递到对话框中,以便对话框操纵父页自动刷新。
para1=document.getElementById(para1).value;
para2=document.getElementById(para2).value;
obj.para1 = para1;
obj.para2 = para2;
// 显示对话框。
var ret=window.showModalDialog(frmWin,obj,'dialogWidth='+width +'px;dialogHeight='+height+'px;help:no;status:no');
//获得模式窗口的返回值
if(ret && ret!="")
{
document.getElementById(paraReturn).value=ret;
}
}
</script>
结果问题来了,在父窗口一直保留的情况下,打开的模式窗口中始终显示的是第一次打开的内容,无论你关闭打开模式窗口多少次,刷新父窗口多少次,都不能及时刷新。除非你关闭父窗口浏览器。重新启一个。
解决方式很简单
1.javascript方式,每次模式窗口的url参数都不一样让IE无法缓存模式窗口的内容
var num=Math.random()
...
var ret=window.showModalDialog(frmWin+"?"+num,obj,'dialogWidth='+width +'px;dialogHeight='+height+'px;help:no;status:no');
2.asp(asp.net)方式
修改ModalDialog.aspx Page_Load中增加以下三行:
Response.CacheControl = "no-cache";
Response.AddHeader ("Pragma", "no-cache");
Response.Expires = 0;
经过测试均OK!