window.parent与window.opener的区别

有这样一个需求,弹出一个新窗口 并从该新页面的select选择框中选择需要的类别,再返回到之前的父窗口页面的某个文本框中。这里就要用到window.parent和window.opener

如题两种方法都是javascript调用父窗口的方法。
1、window.parent是iframe页面调用父窗口对象
比如:parent.jsp
里面有一个文本框
<input id="username" value="">

<iframe scrolling="auto" src="PLUGIN/CMS/children.jsp"
id="rightFrame_id" frameborder="0" name="rightFrame"></iframe>
当要在children.jsp里为parent.jsp页面中的username文本框赋值时,可在children.jsp里这样写:
window.parent.document.getElementById("username").value = "hello"
对应jquery版本为:
$("#username",window.parent.document).val("hello");

2、window.opener是window.open打开的子页面调用父页面对象
比如a.jsp
<input  type="button" onclick="show();" value="测试" />
<input type="text" id="myhobby" value="">
function show(){
		window.open( "PLUGIN/CMS/shop/b.jsp", "ModifyAcce",'width=500,height=400,toolbar=no,status=no,location=no,scrollbars=yes,resizable=yes'); 
	}
想要在b.jsp里为a.jsp中的myhobby赋值,可以这样写:
window.opener.document.getElementById("myhobby").value = "hello";
对应jquery版本为:
$("#myhobby",window.opener.document).val("hello");

总结:
window.parent中的parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面就是B页面的parent。
B页面可以通过parent访问A页面。

window.opener中的opener表示谁打开我的,比如一个A页面利用window.open弹出了B页面,那么A页面就是B页面的opener。
B页面可以通过opener访问A页面。


原文地址:https://www.cnblogs.com/itmyhome/p/4131380.html