打开新窗口window.open 和window.showModalDialog中父子窗口的交互

与父窗口产生交互,分别使用的是window.opener和window.dialogArguments

(补充:比如在A页面上使用window.showModalDialog 来打开一个页面B并且向其穿值过去,传值可以有多种包括数组,对象等,形式如:(在A页面上的js中)

var obj = new Object();  
obj.name="51js";  

var jieshou = window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");  

,然后在B页面上接收就可以这样写:

var obj = window.dialogArguments  
          alert("您传递的参数为:" + obj.name)  

这样就表示是你接收A页面上传过来的值

然后又想关闭页面的时候再传一个值给A页面,在B页面上这样写:

window.returnValue="你好";  

这样,A页面js中定义的jieshou的变量就是接收到了B页面上返回的值,这样就实现了一种子窗口和父窗口交互的形式!)

然后是window.open的父窗口和子窗口的交互是怎么样的呢?

比如父窗口的传参是这样的,一般来是以字符串的形式来传的,具体可以不可以传其他形式的,目前没去深究。

function openTable(id){    
	var feathers="status=no,width=650px,height=670px,top=0px,menubar=no,resizable=no,scrollbars=yes,toolbar=no,channelmode=no";    
	var openWin = window.open("allInfo.html?"+id+","+new Date().getTime(),"declare",feathers);    
	openWin.focus();    
}   

然后子窗口用window.location.search来接收问号(?)后面的值,然后再拆分字符串,得到自己想要的值。


    

这样就可以得到ID,

window.opener是子窗口直接操作父窗口的一种用法,比如说,子窗口关闭时候,调用window.opener.location.reload(),就可以刷新,

还比如说,在子窗口页面直接操作父窗口的数据,如:window.opener.document.getElementById(“name”).value = “输入的数据”;

来通过js的方式来取值或者赋值。

你可能感兴趣的:(打开新窗口window.open 和window.showModalDialog中父子窗口的交互)