showModalDialog方法、open方法及parentt对象、opener对象

通常使用window.open的方式开启新窗口的话,要取得父窗口的控件,可以用window.opener来取得父窗口。然而如果使用showModalDialog的话...却无效。

如果有需要的话,需要修改开启的语法以及showModalDialog中的语法开启语法第2个参数请下self,范例如下var rc=window.showModalDialog(strURL,self,sFeatures);,然后接着就是呼叫父窗口的语法 var pWindow=window.dialogArguments; 这样就可以取得父窗口的window对象控制了。

例如:window.dialogArguments.document.getElementsByName("processId")[0].value;

js中 opener和parent的区别opener即谁打开我的,比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面所在窗口就是B页面的parent。在JS中,window.opener只是对弹出窗口的母窗口的一个引用。


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   doSearch(){  
  var   s   =   new   Object();  
  s.name   ="aaa";  
  var   k   =   window.showModalDialog("child.html",s,"dialogWidth:235px;status:no;dialogHeight:185px");  
  if(k.type=="")//传递回的type为空的时候才刷新页面。  
  {  
  alert("刷新");  
  location.reload();  
  }  
  }  
  //-->  
  </script>  
  </HEAD>  
   
  <BODY>  
  <input   type   ="button"   value="openChild"   οnclick="doSearch()">  
  </BODY>  
  </HTML>  
  --------------  
  child.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   FOR=window   EVENT=onload>  
  <!--  
  var   s   =   new   Object();//这里是关键若用户为单击按钮,已其它方式关闭按钮,则把type=""   传递回去。以免出现问题。且刷新父页面。  
  s.type="";  
  window.returnValue   =   s;  
  //-->  
  </SCRIPT>  
   
  </HEAD>  
   
  <BODY>  
  <input   type   ="button"   value="返回不刷新"   οnclick="doSearch()">  
  </BODY>  
  </HTML>  
   
  <script   language=javascript>  
  <!--  
  var   k=window.dialogArguments;  
  //使用传递过来的"aaa";  
  //..........  
  function   doSearch()  
  {  
  var   s   =   new   Object();  
  s.type="OK";//设置返回值。//这里返回不刷新父页面。  
  window.returnValue=s;  
  window.close();  
  }  
  //-->  
  </script>

用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
解决如下:

<head>
<base target = "_self">
</head>



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值