在前端开发中,经常会使用 window.open()
打开新窗口,但是从子window 向父window 传值并返回父window画面且父window 不刷新 并不常有。
现在介绍下子window 向父window 传值,并返回父window画面,且父window 不刷新的实现方法
首先,需要在父级画面设置 window.name
window.name = window.location.pathname;// 这里使用浏览器路径作为 windowName
window.open("http://www.xxxx.com");// 打开子画面
window.open() 中的参数网上有很多说明,这里不再赘述。
然后,在子画面获取父window 实例,通过父级window,给父级元素赋值
const parentWindow = window.opener;// 获取父级window
if(parentWindow){
parentWindow.document.getElementById("id").value= "xxxx";// 给父级画面的元素赋值
window.open("", parentWindow.name).focus();// 返回父级画面
window.close();关闭当前画面
}
返回父级画面的主要方法是window.open("", parentWindow.name).focus();
,window.open()的第一参数一定要是空字符串,如果传递的是父级路径,则父window会刷新;其次windowName 一定要是父级window设置的windowName,否则会打开一个空白页。
.focus()
这个方法有没有都可以,它主要功能是聚焦到打开的画面。
以上就是window.open 打开窗口的子画面向父级画面传值并返回父画面(父画面不刷新) 功能的介绍