window父子窗口交互

在前端中,可以通过window.open打开新窗口,那么新窗口可以与旧窗口进行数据交互吗?
答案当然是可以的,父窗口在打开子窗口时,子窗口的window对象会有一个opener打开者,代表的正是父窗口的window对象,我们可以通过这个opener对象对父窗口进行操纵。
以下代码请在一个项目中使用,用本地文件来调试,opener对象无效

父窗口

<html !DOCTYPE>
<head>
<title>父窗口</title>
</head>
<body>
	<form>
		<input type="button" id="forward" value="打开子窗口" onclick="open()">
		<br>
		子窗口选择的城市为:<input type="text" id="city">
	</form>
	<script>
		function open(){
			var subWindowURL = "subWindow.html"; //填子窗口的路径
			var style = "width=470,height=150,scrollbars=no,resizable=no";
			window.open(subWindowURL, "子窗口", style);
			document.getElementById("forward").value = "已打开子窗口";
		}
	</script>
</body>
</html>

子窗口

<html !DOCTYPE>
<head>
<title>子窗口</title>
</head>
<body>
	<form>
		选择:
		<select onchange="returnCity(this.value)">
			<option value="北京">北京</option>
			<option value="上海">上海</option>
			<option value="深圳">深圳</option>
			<option value="广州">广州</option>
			<option value="天津">天津</option>
		</select>
		<input type="button" value="关闭子窗口" onclick="close()">
		<br>
		子窗口选择的城市为:<input type="text" id="city">
	</form>
	<script>
		function close(){
			//window.opener表示父窗口的window对象
			var doc = window.opener.document;
			//将父窗口的打开按钮状态由"已打开子窗口"改为"打开子窗口"
			doc.getElementById("forward").value = "打开子窗口";
			window.close();
		}
		function returnCity(city){
			//获取父窗口的document对象
			var doc = window.opener.document;
			//将选择的城市传递到父窗口中显示
			doc.getElementById("city").value = city;
		}
	</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值