open 窗口 跨域访问:
问题:
比如: www.A.com 域名 用 OPEN 打开 www.B.com里面的内容 选择www.B.com 里面的内容返回到 WWW.A.com
解决步骤:
1.在www.A.com 准备testAffix.jsp,iframe.jsp,data.jsp
2.在www.A.com 准备需要访问的.jsp
testAffix.jsp代码:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>测试附件</title>
</head>
<body>
<input type="button" value="按钮" onclick="opens()"/>
<input type="text" value="" id="affixValue" name="affixValue"/>
<script type="text/javascript">
function opens(){
//var url="iframe.jsp?userName=人事科借阅";
var url="iframe.jsp";
window.open(url,'newwindow_db', 'height=600,width=760,toolbar=no, menubar=no, scrollbars=yes, resizable=yes,location=no, status=yes');
//var obj=window.showModalDialog(url,window,'dialogWidth:900px;dialogHeight:600px;status:no');
//alert('obj:'+obj.userId);
}
//affixValue 附件编号
//remark 备注
//isPrint 是否打印
//userId 用户编号
function setSelectAffixValue(affixValue,remark,isPrint,userId){
alert('obj');
alert(affixValue);
document.getElementById("affixValue").value=affixValue;
alert(remark);
alert(isPrint);
alert(userId);
}
</script>
</body>
</html>
iframe.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<iframe style="padding:0px;margin:0px;" src="http://192.168.0.197:8888/filemanage/module/interface/mainFrame.jsp?userName=人事科借阅&URL=http://192.168.0.197:8080/client/client/data.jsp" width="100%" height="100%" frameborder="0" marginheight="0" marginwidth="0" id="iframe" name="iframe"></iframe>
<script type="text/javascript">
function setSelectAffixValue(affixValue,remark,isPrint,userId){
opener.setSelectAffixValue(affixValue,remark,isPrint,userId);
}
</script>
</body>
</html>
data.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
String affixId=request.getParameter("affixId");
String content=request.getParameter("content");
String printStr=request.getParameter("printStr");
String userId=request.getParameter("userId");
%>
<html>
<head>
<title>My JSP 'data.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<script type="text/javascript">
top.setSelectAffixValue('<%=affixId%>','<%=content%>','<%=printStr%>','<%=userId%>');
</script>
</body>
</html>
分享到:
相关推荐
3. **安全限制**:出于安全考虑,跨域访问可能会受到限制。 4. **用户体验**:频繁使用 `window.open()` 可能会影响用户体验,应谨慎使用。 #### 六、总结 `window.open()` 是一个非常实用的方法,可以用来创建新...
如果两个窗口属于不同的源(域名、协议或端口),则存在同源策略限制,这会阻止它们直接访问对方的DOM或JavaScript变量。 要解决父子窗口间的传值问题,有以下几种方法: 1. **使用URL参数**:在`window.open`的`...
- 使用 `window.open` 打开新窗口可能会触发浏览器的安全策略,尤其是当涉及到跨域请求时。 - 在某些情况下,浏览器可能会自动阻止 `window.open` 创建的弹窗,以减少对用户的干扰。 #### 六、其他注意事项 - **...
子窗口可以通过`window.opener`对象访问父窗口,并向其传递数据。需要注意的是,为了安全考虑,在某些情况下浏览器可能会阻止这种跨窗口操作。 ##### 1. 修改父窗口属性 子窗口可以直接修改父窗口的属性或调用其...
4. 跨域安全:在现代浏览器中,出于安全考虑,`window.open()`可能受到同源策略的限制,无法打开不同源的URL,除非目标站点明确允许。 5. 弹出窗口的最佳实践:尽量避免使用弹出窗口,因为它们可能被浏览器的弹窗...
### JS跨域访问解决方案总结 #### 一、跨域访问概念与同源策略 跨域访问,即一个网站上的资源尝试获取另一个不同域名网站上的资源。这种行为在现代Web开发中非常常见,例如通过`<style>`标签加载外部样式表、`...
这种父子窗口的交互方式对于实现复杂网页应用,如页面内嵌、跨域通信等场景非常常见。以下将详细介绍如何在HTML中进行`<iframe>`父窗口与子窗口之间的交互操作。 首先,我们来看一些通用的方法: 1. **获取子窗口...
- 父窗口中,打开子窗口时保存一个引用,如`var childWindow = window.open(...)` - 然后在适当的时候,通过`childWindow`访问子窗口的变量或方法。 2. **使用window.postMessage API**: - HTML5引入了`window....
1. **使用`window.opener`属性**:子窗口可以访问`window.opener`,它是打开它的父窗口的引用。通过这个引用,可以调用父窗口的函数或修改其变量: ```javascript // 子窗口 window.opener.parentFunction('...
放置这些文件在一个web服务器如nginx的HTML目录下是必要的,因为浏览器的同源策略(Same-Origin Policy)限制了跨域访问,而本地文件系统不被视为同源。在web服务器上,所有文件被视为同一域,从而允许父子窗口之间...
(英文)启用本地文件链接与IE不同,Chrome无法打开指向本地文件(file://)的链接。 此扩展名使您可以打开本地文件链接。从iframe打开window.... 我已经修改了从跨域框架访问执行window.open的代码。Chrome商店说明
然而,需要注意的是,由于浏览器的安全策略,跨域的窗口可能无法访问其`closed`属性,这可能导致上述方法失效。因此,在实际应用中,确保新窗口和父窗口处于同一域或同源策略允许的范围内是必要的。同时,考虑到性能...
这两种方法可以有效地实现子窗口与父窗口之间的交互,但在实际开发中需要注意浏览器的安全策略限制,特别是跨域问题可能会导致访问被拒绝。因此,在设计此类功能时,建议充分考虑安全性及兼容性问题。
然而,通过使用窗口对象的`window.opener`属性(在子窗口中)和`window.open`返回的引用(在父窗口中),我们可以间接地实现通信。 1. **在父窗口中操作子窗口元素:** 在父窗口中,我们可以通过`window.open`返回...
需要注意的是,在跨域环境下,出于安全考虑,浏览器对不同域之间的窗口操作有限制,即同源策略(Same-origin policy),因此在进行跨域通信时需要采取一些特殊策略,如使用postMessage方法进行跨域通信。 最后,...
4. **异常处理**:使用`try...catch`语句来捕获可能发生的错误,如跨域问题导致无法访问父窗口时,会抛出异常,此时可以通过捕获异常来避免程序崩溃。 #### 应用场景 这种技术可以广泛应用于各种场景中,例如: -...
5. **JavaScript/jQuery**:使用JavaScript或jQuery,可以通过`window.opener`属性访问父窗口的对象,或者使用`window.postMessage`进行跨窗口通信。 6. **自定义事件/信号量**:如果使用了某种框架如jQuery UI或...
JavaScript跨域是前端开发中常见的问题,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源。本文将详细介绍四种主要的JavaScript跨域方式:JSONP、修改`document.domain`、使用`window.name`以及...
当新窗口与主窗口不在同一个域名下时,可能会遇到跨域访问的问题。为了解决这个问题,可以在新窗口中加入如下代码来避免安全策略带来的限制: ```javascript <!-- function openwin() { window.open("page.html"...
HTML5的`postMessage` API是现代Web开发中一个重要的跨窗口通信机制,它允许不同源的脚本之间安全地传递消息,有效地解决了浏览器的安全限制,尤其是跨域问题。在这个场景下,`postMessage`成为了实现消息跨域推送的...