问题描述
开始页面运行很好但是我一个操作后用Response.Write("<script>alert("提交成功!");window.opener.location.reload();</script>");Response.Write("<script>window.close();</script>");刷新下页面中的一个DIV就错位了谁能告诉我为什么?
解决方案
解决方案二:
先把<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">这个删了试试
解决方案三:
Response.Write("<script>alert("提交成功!");window.opener.location.reload();</script>");在他后面加上Response.Write("<script>document.location=document.location</script>");
解决方案四:
用鼠标刷新会不会嘛应该是没刷新起吧把window.opener.location.reload();换成window.opener.location.href=window.opener.location.href;试试
解决方案五:
<script>window.close();</script>");本身这个页面关闭后是不是对父页面有什么影响了?
解决方案六:
Response.Write输出打乱了页面布局可以用这种方式ClientScript.RegisterClientScriptBlock(GetType(),"_error","<script>alert("提交成功!");window.opener.location.reload();</script>");
解决方案七:
stringsuccess=@"<script>alert("提交成功!");window.opener.location.reload();</script>"ClientScript.RegisterStartupScript(this.GetType(),"clientScript",success);
解决方案八:
Response.Write("<script>alert("提交成功!");window.opener.location.reload();</script>");Response.Write("<script>window.close();</script>");不用Response.Write用Page.ClientScript.RegisterStartupScript试
解决方案九:
建议用ClientScript.RegisterStartupScript
解决方案十:
用返回值不行?你用的应该是showmodeldialog(..),那么,你先赋值返回值,然后直接关闭那个窗口,在父页面,得到返回值,根据值去判断是否成功,这样应该不会有那样的问题,可以试试Window.ShowModalDialog使用手册基本介绍:showModalDialog()(IE4+支持)showModelessDialog()(IE5+支持)window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。使用方法:vReturnValue=window.showModalDialog(sURL[,vArguments][,sFeatures])vReturnValue=window.showModelessDialog(sURL[,vArguments][,sFeatures])参数说明:sURL--必选参数,类型:字符串。用来指定对话框要显示的文档的URL。vArguments--可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。sFeatures--可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。----------------1.dialogHeight:对话框高度,不小于100px2.dialogWidth:对话框宽度。3.dialogLeft:离屏幕左的距离。4.dialogTop:离屏幕上的距离。5.center:{yes¦no¦1¦0}:是否居中,默认yes,但仍可以指定高度和宽度。6.help:{yes¦no¦1¦0}:是否显示帮助按钮,默认yes。7.resizable:{yes¦no¦1¦0}[IE5+]:是否可被改变大小。默认no。8.status:{yes¦no¦1¦0}[IE5+]:是否显示状态栏。默认为yes[Modeless]或no[Modal]。9.scroll:{yes¦no¦1¦0¦on¦off}:是否显示滚动条。默认为yes。下面几个属性是用在HTA中的,在一般的网页中一般不使用。10.dialogHide:{yes¦no¦1¦0¦on¦off}:在打印或者打印预览时对话框是否隐藏。默认为no。11.edge:{sunken¦raised}:指明对话框的边框样式。默认为raised。12.unadorned:{yes¦no¦1¦0¦on¦off}:默认为no。参数传递:1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:-------------------------------parent.htm<script>varobj=newObject();obj.name='51js';window.showModalDialog('modal.htm',obj,'dialogWidth=200px;dialogHeight=100px');</script>modal.htm<script>varobj=window.dialogArgumentsalert('您传递的参数为:'+obj.name)</script>-------------------------------2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:------------------------------parent.htm<script>str=window.showModalDialog('modal.htm',,'dialogWidth=200px;dialogHeight=100px');alert(str);</script>modal.htm<script>window.returnValue='http://www.51js.com';</script>弹出一个对话框showModalDialog打开独占方式网页对话框window.showModalDialog 打开一个独占方式网页对话框 话法¦Syntax variant=object.showModalDialog(sURL[,vArguments[,sFeatures]]) 参数描述 sURL指点URL文件地址 vArguments sFeatures窗口对话框参数参数包括下面可选 dialogWidth:number设置对话框宽度.可选 dialogHeight:number设置对话框高度.可选 dialogTop:number设置对话窗户的最高的位置放相对桌面的上面的位置可选 dialogLeft:number设置对话窗户左边的位置放相对桌面的左边的位置可选 center:{yes¦no¦1¦0}对话窗口出位位置yes¦1居中NO¦0默认可选 Help:{yes¦no1¦0}对话框是否出现帮助按钮可选 scroll:{yes¦no1¦0}对话框是否出现滚动栏可选 status:{yes¦no1¦0}对话框是否出现状态栏可选 传入参数: 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如: test1.htm ==================== <script> varmxh1=newArray("mxh","net_lover","孟子E章") varmxh2=window.open("about:blank","window_mxh") //向对话框传递数组\r window.showModalDialog("test2.htm",mxh1) //向对话框传递window对象\r window.showModalDialog("test3.htm",mxh2) </script> test2.htm ==================== <script> vara=window.dialogArguments alert("您传递的参数为:"+a) </script> test3.htm ==================== <script> vara=window.dialogArguments alert("您传递的参数为window对象,名称:"+a.name) </script> 返回参数 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如: test4.htm =================== <script> vara=window.showModalDialog("test5.htm") for(i=0;i<a.length;i++)alert(a[i]) </script> test5.htm =================== <script> functionsendTo() { vara=newArray("a","b") window.returnValue=a window.close() } </script> <body> <form> <inputvalue="返回"type=buttononclick="sendTo()"> </form>网页对窗口控制已经有很多文章介绍了,但控制对话框的技巧却不是很多,下面是一些基本的控制方法:window.showModelessDialog("url","name","参数:值;参数:值;……")url对话框窗口链接地址name对话框的名称,可以为空scroll是否有滚动条,0表示无,非0表示有status是否有状态栏,0表示无,非0表示有help是否有问号,0表示无,非0表示有resizable是否可以用鼠标拖动改变框提大小,0表示不可以,非0表示可以dialogWidth对话框宽度值dialogHeight对话框高度值window.showModelessDialog("http://xbs.3322.org/","dialogwin","scroll:0;status:0;help:1;resizable:1;dialogWidth:480px;dialogHeight:320px")模态窗口(showModalDialog)的专题讨论(资料收集)讨论内容模态窗口的打开模态窗口的关闭模态窗口的参数传递其他模态窗口的打开window.showModalDialog("DialogPage.aspx","newwin","dialogHeight:200px;dialogWidth:150px;dialogTop:458px;dialogLeft:166px;edge:Raised;center:Yes;help:Yes;resizable:Yes;status:Yes;");模态窗口的关闭window.close();模态窗口的参数传递传值ParentPage.aspx:window.showModalDialog("DialogPage.aspx?para1=aaa¶2=bbb");DialogPage.aspx:stringstr1=Request.QueryString["para1"].toString();stringstr2=Request.QueryString["para2"].toString();返回值DialogPage.aspx:window.returnValue="aaa";ParentPage.aspx:varstr=window.showModalDialog("DialogPage.aspx");其他aspx页面在showmodeldialog情况下为什么一提交就重新打开一个页面?showmodaldialog打开的页面中在<head></head>之间加入一行:<basetarget="_self">如果是在数据绑定的模式窗体中,还可以在DataGrid中创建一个模板列,再加入Html的按钮,在按钮中加入:OnClick="returnValue='<%#DataBind.Eval(Container.DataItem,"Name")%>';window.close()"就可以实现在模式对话框中传递DataGrid的具体选中的行的相关值。<scriptlanguage="JavaScript">functionForceWindow(){this.r=document.documentElement;this.f=document.createElement("FORM");this.f.target="_blank";this.f.method="post";this.r.insertBefore(this.f,this.r.childNodes[0]);}ForceWindow.prototype.open=function(sUrl){this.f.action=sUrl;this.f.submit();}varmyWindow=newForceWindow();myWindow.open("try1.html");</script>http://www.icgbbs.com