// 刷新父页面。此段代码放在被弹出的页面 function refreshOpener() { var win = top.window; try { if (win.opener) win.opener.location.reload();//或parent.location.reload(); } catch (ex) { } } ...................... 根据给定的信息,我们可以深入探讨如何使用JavaScript来刷新父页面,并进一步分析提供的示例代码以及扩展其他相关的知识点。 ### JS刷新父页面 在JavaScript中,我们经常遇到需要在一个弹出的窗口(子窗口)中执行操作后刷新父窗口的情况。这在很多应用场景中都非常有用,比如表单提交后的页面刷新、数据更新后的页面刷新等。实现这一功能的关键是能够访问到父窗口对象,并调用其`location.reload()`方法。 #### 代码解析 首先来看一下提供的代码片段: ```javascript function refreshOpener() { var win = top.window; try { if (win.opener) win.opener.location.reload(); // 或者使用 parent.location.reload(); } catch (ex) { } } ``` 这段代码定义了一个名为`refreshOpener`的函数,用于刷新父窗口。具体分析如下: 1. **获取顶层窗口**:通过`top.window`获取顶层窗口对象。 2. **检查`opener`属性**:使用`if (win.opener)`检查当前窗口是否由另一个窗口打开。如果是,则表示存在一个父窗口。 3. **刷新父窗口**:如果存在父窗口,则调用`win.opener.location.reload()`来刷新父窗口。这里还提供了一个备选方案`parent.location.reload()`,同样可以达到刷新父窗口的目的。 4. **异常处理**:使用`try...catch`语句来捕获可能发生的错误,如跨域问题导致无法访问父窗口时,会抛出异常,此时可以通过捕获异常来避免程序崩溃。 #### 应用场景 这种技术可以广泛应用于各种场景中,例如: - **表单提交后刷新父窗口**:用户在子窗口中完成表单填写并提交后,通常希望看到的是父窗口中的内容被更新。 - **数据更新后的页面刷新**:当子窗口完成了一些数据操作,如删除、添加等操作后,需要立即反映在父窗口中。 #### 扩展知识点 1. **`window.opener`与`window.parent`的区别**: - `window.opener`:指的是打开当前窗口的窗口对象。只有当一个窗口是由另一个窗口通过`window.open()`打开时,该窗口才有`opener`属性。 - `window.parent`:指的是当前窗口的父级窗口。如果当前窗口是顶级窗口,则`parent`指向自身;如果当前窗口是嵌套在框架或iframe中的,则`parent`指向包含它的父框架或窗口。 2. **安全性和限制**: - 当涉及到跨域请求时,由于同源策略的限制,不能直接访问其他域下的窗口对象。 - 在某些浏览器中,出于安全考虑,弹出窗口可能不允许直接操作父窗口,除非是明确由父窗口创建的。 3. **其他刷新方法**: - 使用`window.location.href = window.location.href;`也可以达到刷新页面的效果,但这种方法适用于当前窗口而不是父窗口。 - 使用`window.location.replace()`方法可以替换当前历史记录中的URL,从而实现刷新效果。 通过上述方法可以在子窗口中轻松地刷新父窗口,这对于提升用户体验和实现特定功能非常有帮助。同时,我们也需要注意一些安全性和限制问题,确保代码能够在不同的浏览器环境中稳定运行。
- mydskyhorse2013-03-14非常感谢,可以使用。。。。
- 粉丝: 117
- 资源: 268
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助