js小练习(四):关于弹窗的父子页面传值问题

本文探讨了window.open和window.close在本地浏览器中的使用限制,特别是在涉及跨域问题时。通过实例展示了如何在主页面与弹出窗口间传递城市选择信息,并解决了file:///页面上出现的Uncaught DOMException错误,建议使用本地服务器如node.js来避免此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)核心思想:

主要是关于window.open()和window.close()的简单运用,涉及到了父子页面传值的问题。

需要注意的是如果是在本地浏览器,用file:///页面打开的话,选择城市之后按F12会看到报错:Uncaught DOMException: Blocked a frame with origin “null” from accessing a cross-origin frame.

因为跨页面涉及到了域的概念,传值会失败,window.close()也不出效果。建议是在本地架一个服务器。我用node.js搭了一个服务器,就不再报这个错误了。

(二)关键代码:

(1)主html页面:

 <div>  
    请选择城市:<input type="text" name="city" id="city" readonly>
    <input type="button" onclick="Open()" value="选择">
</div>

(2) 主页面js:

function Open(){ 
window.open("suceess.html","广告页",
"width=300,height=100,scollbars=yes,resizeble=yes");
//测试了一下,这里的样式里如果长宽带了单位,则样式效果失效,scollbars设置滑动条,resizeble设置窗口是否可以拉伸缩小。

} 

(3)跳转弹窗页面html:

<select id="subCity" name="subCity" onchange="seclectCity(this.value)">
    <option value="无">-----请选择城市=-----</option>
    <option value="北京">北京</option>
    <option value="上海">上海</option>
    <option value="成都">成都</option>
</select>

(3)跳转页面js:

function seclectCity(vlu){ 
opener.document.getElementById("city").value =vlu;//子界面向父界面传值
window.close();
}

(三)运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值