我们在运用struts开发的时候会用到这样的情况,需要在一个页面中的iframe中进行数据操作,等数据提交完成后需要将父页面的数据进行更新。这里我写一下我自己用到的一个方法。是我的一个老师推荐的。
方法其实也挺简单:在iframe的action方法中定义父页面的转向。
public ActionForward insertRecord(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
ActionForward forward = null;
BasSuppliesUseForm frm = (BasSuppliesUseForm) form;
BasSupplies basSupplies = new BasSupplies();
try {
// 设置部门初始值
BasSuppliesUse basSuppliesUseObject = frm.getSaveObject();
this.getBasSuppliesService().update(basSuppliesUseObject );
StringBuffer scriptString = new StringBuffer();
scriptString.append("<html>\n\r");
scriptString.append("<head>\n\r");
scriptString.append("<meta http-equiv='Content-Type' content='text/html; charset=GBK'>\n\r");
scriptString.append("</head>\n\r");
scriptString.append("<body>\n\r");
scriptString.append("<scriptlanguage='javascript'>\n\r");
scriptString.append("parent.location.href=\"BasSupplies.do?method=refreshViewRecord&suppliesId="+ frm.getQueryObject().getBasSupplies().getSuppliesId() + "\"\n\r"); //这里定义父页面的src,这里是关键
scriptString.append("</script>\n\r");
scriptString.append("</body>\n\r");
scriptString.append("</html>");
response.setContentType("text/html;charset=GBK");
response.getWriter().print(scriptString.toString());
} catch (Exception e) {}
return forward;
}
这样就实现了。
分享到:
相关推荐
这种方式简单易懂,但是需要注意的是,由于浏览器的安全策略限制,如果`iframe`与父页面不在同一个域下,则可能会因为同源策略而无法执行该操作。 ##### 方法二:使用HTML表单的`target`属性 这种方法适用于`iframe...
首先在父页面的javascript给定义一个window.name,并赋予一个字符串值,如window.name="test",其中赋予的字符串值可以随意定义,然后在Iframe页面的Form 标签中定义target属性,并且其值也必须与之前定义的window....
例如,当用户在`iframe`内部完成某个操作(如登录验证)后,可能需要返回到父页面继续执行其他逻辑或显示不同的内容。这就涉及到如何实现从`iframe`内部控制其外部页面的行为。 #### 三、代码解析与实现原理 接...
在处理`iframe`时,经常需要进行父子页面间的交互,例如从`iframe`调用父页面的函数或传递数据。下面我们将详细介绍`js`中`iframe`调用父页面方法的相关知识点。 1. **基本调用方式** 在`iframe`中的页面,可以...
- **表单提交**:在`iframe`中显示一个表单,提交后通知父页面处理结果。 - **广告和跟踪**:`iframe`用于加载第三方广告,通过`postMessage`传递用户交互数据。 - **预加载内容**:在`iframe`中预加载页面,然后...
值得注意的是,这种方法依赖于同源策略,因为跨域的iframe不允许访问其父页面的DOM。如果`a.jsp`和`b.jsp`位于不同的域名下,这个方法将无法工作,除非两个页面之间有适当的CORS设置。 总结,通过在子页面`b.jsp`中...
根据给定的信息,我们可以深入探讨如何使用JavaScript来刷新父页面,并进一步分析提供的示例代码以及扩展其他相关的知识点。 ### JS刷新父页面 在JavaScript中,我们经常遇到需要在一个弹出的窗口(子窗口)中执行...
2. iframe的使用:layui提供了一套完整的iframe解决方案,包括创建iframe、动态加载内容、与父页面或兄弟iframe之间的通信等。在layuiadmin-iframe3中,可以看到如何通过layui的API来添加和控制iframe元素。 3. ...
`iframe`可以跨越同源策略限制,实现跨域通信,如使用`window.postMessage`方法,允许父页面与`iframe`之间的数据传递。 ```javascript // 父页面向iframe发送消息 window.postMessage(data, 'http://example.com')...
例如,通过`window.postMessage()`方法,父页面可以向IFRAME发送消息,同时IFRAME也可以向其父页面发送消息。这种方法遵循同源策略,即只有同源的页面才能互相通信,但也可以通过设置`document.domain`属性来放宽这...
使用`window.postMessage`方法,`iframe`与父页面之间可以进行跨域通信。它们可以通过监听`message`事件来接收对方发送的数据。 6. **`iframe`的懒加载** 为了优化性能,可以使用懒加载策略,延迟`iframe`的加载...
通过监听`form`的`submit`事件,可以控制数据提交后的行为,比如更新`iframe`内容或提示用户。 **五、Ajax刷新** `iframe`可以结合Ajax实现无刷新更新。通过JavaScript的Ajax请求获取新数据,然后使用`document....
- `allow-same-origin`: 允许与父页面同源。 - **示例**: ```html <iframe src="example.html" width="600" height="400" sandbox="allow-scripts allow-same-origin"></iframe> ``` #### 四、Iframe的高级应用 ...
由于浏览器的同源策略,`iframe`内的页面与父页面默认无法通信。但通过`window.postMessage`方法,可以实现在不同源的窗口之间传递消息,从而实现跨域通信。 **四、性能和优化** 1. **懒加载**:如果`iframe`内容不...
7. ** Seamless 属性**:虽然不是标准属性,但`seamless`可以让`iframe`看起来更自然地融入父页面,减少视觉断层。 8. **响应式设计**:通过CSS媒体查询,可以调整`iframe`的尺寸以适应不同屏幕大小的设备。 ### ...
在网页开发中,有时我们需要使用弹出层来展示一些内容,比如进行表单提交、查看详细信息等。...同时,要确保iframe页面与父页面之间有正确的引用关系,以便能够正确地访问和操作父窗口的layer实例。
例如,你可以创建一个iframe作为Ajax请求的目标,这样表单提交后,响应内容会加载到iframe中,而不会影响到主页面的其他内容。这种方式在处理需要返回复杂HTML结构或者需要保持表单状态的场景时非常有用。 在提供的...
- 默认情况下,不同源的iframe与父页面之间存在同源策略限制,不能直接访问对方DOM。但可以通过`window.postMessage`方法进行跨域通信。 5. **jQuery动画效果**: - 可以使用`.fadeIn()`, `.fadeOut()`, `....