1、在showModalDialog函数打开的窗口中提交页面的时候重新打开新页面的解决办法
在弹出页面的<head></head>中(如果是模板页在head的content中)加入<base target="_self"/>或<base target="_self"></base>。
2、返回值window.returnValue问题
如果父窗体和子窗体都是html采用js或jquery直接在弹出页面中window.returnValue对应的值父窗体接收即可;
如果是父窗体和子窗体都是.aspx弹出页面需要提交数据到服务器端并会刷新页面是就会出现新页面重新打开问题用1解决即可,还有就是需要靠后台来返回window.returnValue的值问题,这就需要我们在后台返回如下:
Response.Write("<script type=\"text/javascript\">window.close();window.returnValue=‘" + url +
"‘;if(window.opener) { window.opener.returnValue=‘" + url + "‘;}</script>");
url是我们需要返回的值,父窗口如下
var url = "../VideoUpload/NewUploadBigFile.aspx?Type=" + t + "&etc=" + new Date().getTime();
obj = document.getElementById(o);
var f = showModalDialog(url, "文件上传", "dialogWidth=450px;dialogHeight=150px;status:no;scroll=no;help:no");
if (f) {
obj.value = f;
}
接收即可,这里出现if(window.opener) { window.opener.returnValue=‘" + url + "‘;},是因为Google浏览器Chrome不支持直接对showModalDialog弹出窗体设置returnValue,替代方法是在弹出窗口中设置window.opener.returnValue,这样解决兼容问题。