天天看点

showModalDialog 传值及刷新

(一)showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口.

farther.html

---------------------------

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

< HTML >

     < HEAD >

         < TITLE > New Document  </ TITLE >

         < META  content ="EditPlus"  name ="Generator" >

         < META  content =""  name ="Author" >

         < META  content =""  name ="Keywords" >

         < META  content =""  name ="Description" >

         < script  language ="javascript" >  

         <!--  

         function  openChild(){

         var  k  =  window.showModalDialog( " child.html " ,window, " dialogWidth:335px;status:no;dialogHeight:300px " ); 

         if (k  !=   null ) 

        document.getElementById( " txt11 " ).value  =  k; 

        } 

         // --> 

         </ script >

     </ HEAD >

     < BODY >

         < FONT  face ="宋体" ></ FONT >

         < br >

        传递到父窗口的值: < input  id ="txt9"  type ="text"  value ="3333333333333"  name ="txt9" >< br >

        返回的值: < input  id ="txt11"  type ="text"  name ="txt11" >< br >

        子窗口设置的值: < input  id ="txt10"  type ="text"  name ="txt10" >< br >

         < input  id ="Button1"  onclick ="openChild()"  type ="button"  value ="openChild"  name ="Button1" >

     </ BODY >

</ HTML >

child.html

---------------------------

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

< HTML >

     < HEAD >

         < TITLE > New Document  </ TITLE >

         < META  content ="EditPlus"  name ="Generator" >

         < META  content =""  name ="Author" >

         < META  content =""  name ="Keywords" >

         < META  content =""  name ="Description" >

         < meta  http-equiv ="Expires"  content ="0" >

         < meta  http-equiv ="Cache-Control"  content ="no-cache" >

         < meta  http-equiv ="Pragma"  content ="no-cache" >

     </ HEAD >

     < BODY >

         < FONT  face ="宋体" ></ FONT >

         < br >

        父窗口传递来的值: < input  id ="txt0"  type ="text"  name ="txt0" >< br >

        输入要设置父窗口的值: < input  id ="txt1"  type ="text"  name ="txt1" >< input  id ="Button1"  onclick ="setFather()"  type ="button"  value ="设置父窗口的值"  name ="Button1" >< br >

        输入返回的值: < input  id ="txt2"  type ="text"  name ="txt2" >< input  id ="Button2"  onclick ="retrunValue()"  type ="button"  value ="关闭切返回值"  name ="Button2" >

         < input  id ="Button3"  onclick =""  type ="button"  value ="关闭刷新父窗口"  name ="Button3" >

         < script  language ="javascript" >  

         <!--  

         var  k = window.dialogArguments; 

         // 获得父窗口传递来的值 

         if (k != null ) 

        { 

        document.getElementById( " txt0 " ).value  =  k.document.getElementById( " txt9 " ).value; 

        } 

         // 设置父窗口的值 

         function  setFather() 

        { 

        k.document.getElementById( " txt10 " ).value  =  document.getElementById( " txt1 " ).value 

        } 

         // 设置返回到父窗口的值 

         function  retrunValue() 

        { 

         var  s  =  document.getElementById( " txt2 " ).value; 

        window.returnValue = s; 

        window.close(); 

        } 

         // --> 

         </ script >

     </ BODY >

</ HTML >

----------------------------

说明:

由于showModalDialog缓存严重,下面是在子窗口取消客户端缓存的设置.也可以在服务器端取消缓存,参考:

http://adandelion.cnblogs.com/articles/252137.html

<meta http-equiv="Expires" CONTENT="0">

<meta http-equiv="Cache-Control" CONTENT="no-cache">

<meta http-equiv="Pragma" CONTENT="no-cache">

(二)下面是关闭刷新父窗口的例子

farther.html

---------------------------

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

< HTML >

     < HEAD >

         < TITLE > New Document  </ TITLE >

         < META  NAME ="Generator"  CONTENT ="EditPlus" >

         < META  NAME ="Author"  CONTENT ="" >

         < META  NAME ="Keywords"  CONTENT ="" >

         < META  NAME ="Description"  CONTENT ="" >

         < script  language ="javascript" >  

         <!--  

         function  openChild() 

        { 

         var  k  =  window.showModalDialog( " child.html " ,window, " dialogWidth:335px;status:no;dialogHeight:300px " ); 

         if (k  ==   1 ) // 判断是否刷新 

        { 

        alert('刷新'); 

        window.location.reload(); 

        } 

        } 

         // --> 

         </ script >

     </ HEAD >

     < BODY >

         < br >

        传递到父窗口的值: < input  id ="txt9"  type ="text"  value ="3333333333333"  NAME ="txt9" >< br >

         < input  type ="button"  value ="openChild"  onclick ="openChild()"  ID ="Button1"  NAME ="Button1" >

     </ BODY >

</ HTML >

child.html

----------------------

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

< HTML >

     < HEAD >

         < TITLE > New Document  </ TITLE >

         < META  content ="EditPlus"  name ="Generator" >

         < META  content =""  name ="Author" >

         < META  content =""  name ="Keywords" >

         < META  content =""  name ="Description" >

         < meta  http-equiv ="Expires"  content ="0" >

         < meta  http-equiv ="Cache-Control"  content ="no-cache" >

         < meta  http-equiv ="Pragma"  content ="no-cache" >

     </ HEAD >

     < BODY >

         < FONT  face ="宋体" ></ FONT >

         < br >

        父窗口传递来的值: < input  id ="txt0"  type ="text"  name ="txt0" >< br >

         < input  id ="Button1"  onclick ="winClose(1)"  type ="button"  value ="关闭刷新父窗口"  name ="Button1" >

         < input  id ="Button2"  onclick ="winClose(0)"  type ="button"  value ="关闭不刷新父窗口"  name ="Button2" >

         < script  language ="javascript" >  

         <!--  

         var  k = window.dialogArguments; 

         // 获得父窗口传递来的值 

         if (k != null ) 

        { 

        document.getElementById( " txt0 " ).value  =  k.document.getElementById( " txt9 " ).value; 

        } 

         // 关闭窗口返回是否刷新的参数. 

         function  winClose(isRefrash) 

        { 

        window.returnValue = isRefrash; 

        window.close(); 

        } 

         // --> 

         </ script >

     </ BODY >

</ HTML >

--------------------------

说明

1.下面是取消客户端缓存的:

<meta http-equiv="Expires" CONTENT="0">

<meta http-equiv="Cache-Control" CONTENT="no-cache">

<meta http-equiv="Pragma" CONTENT="no-cache">

也可以在服务器端取消缓存,参考:

http://adandelion.cnblogs.com/articles/252137.html

2.向父窗口传递阐述在ASP.NET中也可以是用aaa.aspx?id=1的方式传递.

3.不刷新父窗口的话在父窗口中直接这样一来设置可以.

<script>

window.showModalDialog("child.html",window,"dialogWidth:335px;status:no;dialogHeight:300px");

</script>

4.在子窗口中若要提交页面的话要加入:,这样就不会打开新窗口了.

<head>

<base target="_self">

</HEAD>

继续阅读