window.showModalDialog和window.open关闭子页面时刷新父页面【转】


window.open 弹出新窗口的命令; 
'page.html' 弹出窗口的文件名; 
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替; 
height=100 窗口高度; 
width=400 窗口宽度; 
top=0 窗口距离屏幕上方的象素值; 
left=0 窗口距离屏幕左侧的象素值; 
toolbar=no 是否显示工具栏,yes为显示; 
menubar,scrollbars 表示菜单栏和滚动栏。 
Resizable=no 是否允许改变窗口大小,yes为允许; 
location=no 是否显示地址栏,yes为允许; 
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许

父窗体打开页面的javascript

function GoToPage(id)
     {
           
var title="title";
           
var url="xxxxx.aspx?ID="+id+"&Radom="+Math.random();;
           
var Width="700";
           
var Height="600";
           
var arguemnts = new Object();
           arguemnts.window = window;
            if (document.all&&window.print)
            {
                window.showModalDialog(url,arguemnts,
"dialogWidth:" + Width + "px;dialogHeight:" + Height + "px;center:yes;status:no;scroll:yes;help:no;");
                //或者window.showModelessDialog

               //模态窗口在关闭后可以直接在后面跟上刷新的语句

               window.location.reload();
            }
            
else 
           { 
                window.open(url,
"","width=" + Width + "px,height=" + Height + "px,resizable=1,scrollbars=1"); 
           }
        }

在 window.open打开的窗口中,关闭子窗口并刷新父窗口

window.opener.location.reload();window.opener=null;window.close();

在window.showModalDialog打开窗口中,关闭子窗口并刷新父窗口

window.dialogArguments.window.location = window.dialogArguments.window.location; self.close();

 

 

(一)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"> 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值