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

来源:互联网 发布:苹果手机涂鸦软件 编辑:程序博客网 时间:2024/06/15 09:00

通常使用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"   onclick="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="返回不刷新"   onclick="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>