首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 关闭子窗体 刷新父窗体

在JavaScript中,关闭子窗口并刷新父窗口通常涉及到window.close()方法和window.opener对象的使用。以下是具体的实现步骤和示例代码:

基本概念

  1. window.close(): 这个方法用于关闭当前窗口。
  2. window.opener: 这个属性指向打开当前窗口的那个窗口对象。

实现步骤

  1. 在子窗口中调用window.close()方法关闭子窗口。
  2. 在子窗口关闭之前,使用window.opener.location.reload()方法刷新父窗口。

示例代码

假设父窗口的HTML文件为parent.html,子窗口的HTML文件为child.html

parent.html

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Parent Window</title>
    <script>
        function openChildWindow() {
            window.childWindow = window.open('child.html', 'ChildWindow', 'width=400,height=300');
        }
    </script>
</head>
<body>
    <button onclick="openChildWindow()">Open Child Window</button>
</body>
</html>

child.html

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Child Window</title>
    <script>
        function closeAndRefreshParent() {
            if (window.opener && !window.opener.closed) {
                window.opener.location.reload();
            }
            window.close();
        }
    </script>
</head>
<body>
    <button onclick="closeAndRefreshParent()">Close and Refresh Parent</button>
</body>
</html>

解释

  1. 父窗口
    • 当点击“Open Child Window”按钮时,openChildWindow()函数会被调用,打开一个新的子窗口。
    • window.open()方法的第二个参数是窗口名称,第三个参数是窗口特性(如宽度和高度)。
  • 子窗口
    • 当点击“Close and Refresh Parent”按钮时,closeAndRefreshParent()函数会被调用。
    • window.opener.location.reload()方法会刷新父窗口。
    • window.close()方法会关闭当前子窗口。

注意事项

  • 确保子窗口是由父窗口通过window.open()方法打开的,否则window.opener可能为null或未定义。
  • 在某些浏览器中,出于安全考虑,可能会阻止脚本关闭非脚本打开的窗口。

通过这种方式,你可以在关闭子窗口的同时刷新父窗口,确保父窗口的数据是最新的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实现iframe父窗体与子窗体的通信

本文主要会介绍如何基于MessengerJS,实现iframe父窗体与子窗体间的通信,传递数据信息。同时本文会提供一个可运行的实例代码,实现在父窗体中,获取到来自子窗体的数据的效果。...(2)当子窗体触发了一个事件后,要给父窗体传一个跳转地址的url。父窗体监听到这个事件后,根据接收到的url,来更新当前父窗体的url,实现页面的跳转。...这里分别是父窗体和子窗体的代码实现,可直接在浏览器中打开查看效果,其中messenger.js可以在这里下载,放到项目目录下。 父窗体: 子窗体也要先引入messenger.js,同时初始化一个messenger到一个统一的项目中,其中第一个参数为自己页面messenger对象的名字,第二个参数为项目名称;然后添加消息对象,告知子窗体的window...同时提供了一个完整的实例,可以实现子窗体向父窗体传递消息,父窗体通过监听消息事件,来获取子窗体消息的目的。如有问题,欢迎指正。

9.8K771
  • C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)

    ”与“Chilid子窗体”之间如何相互的调用方法。...C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用) 看似一个简单的功能需求,其实很多初学者处理不好的,很多朋友会这么写: C# Code: //父窗体是是frmParent,子窗体是frmChildA...//在父窗体中打开子窗体 frmChildA child = new frmChildA(); child.MdiParent = this; child.Show(); //子窗体调父窗体方法...如果父窗体与子窗体在同一个模块内看似没有错,因为这种反向引用在同一个模块内是可行的,但程序不能这么写,你把它写死了!固化了!...假设我们的项目不断在扩展,需要将父窗体与子窗体分开在不同的模块,这段代码就完了!因为父窗体模块必须引用子窗体模块,而子窗体需要用到frmParent的类,又要引用父窗体的模块!

    8.4K20

    C# WPF MVVM模式下在主窗体显示子窗体并获取结果

    01 — 前言 在winform中打开一个新的子窗体很简单,直接实例化窗体并show一下就可以: Form2 f2 = new Form2(); f2.Show(); 或者 Form2...所以正常是通过调用框架下得WindowManager接口,在window后台代码中通过WindowManager注册需要弹出的窗体类型,在ViewModel通过WindowManager的Show或ShowDialog...02 — ShowDialog用法实现 首先实例化新的子窗体SubShowWindowViewModel ,然后通过CM框架的ioc容器获取IWindowManager接口,通过接口的ShowDialog...调出子窗体,ControlTestStr 用来显示子窗体的赋值并在界面显示。...ControlTestStr = subShowWindowViewModel.SubShowWindowStr; } } } 03 — 结果演示 ControlTestStr 获取到了新窗体的赋值并显示到了界面

    1.8K10

    Js窗体window大小设置(转)

    offsetParent 属性指定的父坐标的高度  offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置  offsetTop:获取对象相对于版面或由...offsetTop 属性指定的父坐标的计算顶端位置  event.clientX 相对文档的水平座标  event.clientY 相对文档的垂直座标  event.offsetX 相对容器的水平坐标...clientWidth、offsetWidth、clientHeight、offsetHeight均无关)  function resize(){           var win =  Ext.fly('窗体对象组件...');//获得要调整的窗体,注意这里先用Ext.fly的方式来获取组件 ,如果不行再换别的,如getCmp,get等                                                                  ...                    listeners: {                           close:function(w){                               //关键部分:关闭窗口前先还原

    6.1K20

    在Office应用中打开WPF窗体并且让子窗体显示在Office应用上

    我们可以简单的实例化一个WPF窗体对象然后在Office应用程序的窗体上打开这个新的WPF窗体,此时Office应用的窗体就是WPF的宿主窗体。...然后宿主窗体跟Office应用并不是在一个UI线程上,子窗体很可能会在宿主窗体后面看不到。...这个时候需要调用Win32函数,将Office应用的窗体设置为WPF子窗体的父窗体,这个函数的形式定义如下: [DllImport("user32.dll", SetLastError = true)]...下面方法是一个完整的方法,可以通过反射实例化一个WPF窗体对象,然后设置此WPF窗体对象为Office应用程序的子窗体,并正常显示在Office应用程序上。...WindowInteropHelper(winBox); winBoxIntreop.EnsureHandle(); //将Excel句柄指定为当前窗体的父窗体的句柄

    1.6K50

    VB 子窗体被PictureBox控件挡住无法显示

    1、问题描述     VB做机房收费系统的时候,用的MDI主窗体,在主窗体上加了一个Picturebox控件,运行的时候,点了子窗体,但是却没有出现,后来才发现,子窗体被Picturebox控件给当在了后面...2、问题原因    在MDI程序中,子窗体实际位于MDIClient里,就是说,子窗体的父窗体是MDIClient,而PictureBox和MDIClient属于同一级的    层次结构    ThunderMDIForm-MDIForm1...   --MDIClient    ---ThunderFormDC-Form1  子窗体1    ---ThunderFormDC-Form2  子窗体2    --ThunderPictureBoxDC...参数:    hWndChild:子窗口句柄。hWndNewParent:新的父窗口句柄。如果该参数是NULL,则桌面窗口就成为新的父窗口。    ...返回值:    如果函数成功,返回值为子窗口的原父窗口句柄;如果函数失败,返回值为NULL。

    1.4K20

    如果在BackgroundWorker运行过程中关闭窗体…

    由于操作是异步执行的,用户可能在异步操作执行过程中关闭当前窗体,而窗体的关闭会伴随着Dispose方法的执行。...一、一个简单的例子 我们写一个简单的例子来说明上述的场景:在一个非主窗体(主窗体的关闭会导致程序的终止)的Windows窗体中,一个BackgroundWorker被用于异步地执行一段耗时的操作。...当该窗体被显示出来后,点击按钮让注册到该BackgroundWorker的异步操作开始执行,然后在操作结束之前(10秒)将当前窗体关闭。...而实际上,我们通常注册该事件在窗体上进行一些状态信息的显示,既然窗体都被关闭,这些操作就无需执行。...那么,有什么方式可以确保在窗体关闭的状态下阻止RunWorkerCompleted事件处理程序的执行呢?

    1.2K110

    layer实现关闭弹出层刷新父界面功能详解

    ,因为在操作逻辑上,手动关闭弹出框,应该不触发刷新操作,只有当弹出框的处理逻辑执行成功后,调用函数关闭弹出框才触发父界面刷新操作,基于这个逻辑,应该选择方案一。...方案二,不管怎样都会刷新页面,实际上无端的增加了服务器的处理压力。 方案二:可以解决子页面处理后的结果发送给子页面的父页面的问题。...对于layer.js出现回调关闭父类的弹出层时,之前的表单的submit失效的问题: 如何解决:网上有很多,有的是转为ajax的请求,在数据传输完再关闭父类的弹出层: 下面是关闭父弹出层的办法: 1 2...layer },500); 我还需要在关闭父类窗口后再打开一个窗口,则怎么解决,后面发现layer.js留有一个好的方式,那就是调用父窗口的方法,这个不受子窗口的影响,通过:parent.父类方法名(...未经允许不得转载:肥猫博客 » layer实现关闭弹出层刷新父界面功能详解

    4.7K60
    领券