`

JS Iframe跨域访问父document对象

    博客分类:
  • JS
 
阅读更多

假设有A: 127.0.0.1:8080

          B:  192.168.0.1:7001 

         两个服务器,A的IFrame嵌入B的页面,

由于两个页面不在同一个域和端口下,会报错:Protocols, domains, and ports must match.

怎么实现A对B页面的dom元素的操作呢?

1.实现B页面的扩展

在A服务器下建立一个代理页面,用于B页面dom对象的获取,简称 AProxy.html

这样会形成A和B不同域

A和Aproxy同域

A的Iframe 嵌入B

B的iframe嵌入Aproxy

 

只需要通过Aproxy对其父级B进行dom读取,虽然不属于同一域可以进行doucment.domain的设置

然后通过Aproxy对其A(parent.parent )进行dom设置,以便可以回调 

 

代码如下:

 

 

A页面

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head>
        <title>调用demo</title>
        <meta name="google" value="notranslate" />         
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<script>
			document.domain = "192.168.0.1:7001";
			var swfObj = null;
			function setSwfObj(obj){ //这里是代理页面对B页面的dom回调
				if(null == swfObj){
					swfObj = obj;
				}
				return swfObj;
				
			}
			

			function TESTDrawPoints1(){
				var obj =  swfObj.GetExtent();
				alert(obj.xmin+","+obj.ymin);
				//getSwfObject().DrawPoints("点图层","001","116.46,40","circle",20,"ff0000",false,"测试点",true,true,true,"","pointmouseClick","");
			}
		</script>
    </head>
	
<body>
		<input type="button" value="画单个点" onclick="TESTDrawPoints1()"/>
	 
	   <div style="overflow:auto;">
	 		 <iframe id="gframe" name="gframe" src="http://127.0.0.1:7001/B.jsp" width="99%" height="500" > 
		</div>
		 
	
</body>
</html>

 

 AProxy.html

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head>
        <title>GIS调用demo</title>
        <meta name="google" value="notranslate" />         
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<script>
			window.onload = function(){
				document.domain = "192.168.0.1:7001";
				var ssw = window.parent;
			    var swfObj = window.parent.document.getElementById("index");//获取swfObj对象
			   	parent.parent.setSwfObj(swfObj);//设置dom对象,A页面有回调接受
			}
		</script>
    </head>
<body>
</body>
</html>

 

B 页面:在其body之前加入

 

<iframe id="myfarme" src="###" style="display: none;"></iframe> //一定display 为none  这样不会占有空间
        <script>
		    window.onload = function(){
		   	     document.domain = "192.168.0.1:7001";//这个必须设置,设置统一域名
		   	     document.getElementById('myfarme').src="http://127.0.0.1:8080/Aproxy.html";
		    }
		</script>  

 

 

 

分享到:
评论

相关推荐

    js iframe跨域访问(同主域/非同主域)分别深入介绍

    iframe跨域访问也被研究的很透了。 一般分两种情况: 一、 是同主域下面,不同子域之间的跨域; 同主域,不同子域跨域,设置相同的document.domian就可以解决; 父页访问子页,可以document.getElementById(“myframe...

    解决ASP.NET AJAX在frame及iframe中跨域访问的问题

    1、为ScriptManager添加脚本引用,不从ScriptResource.axd中加载MicrosoftAjax.js脚本,而是直接加载 &lt;asp:ScriptReference Name="MicrosoftAjax.js" ScriptMode="auto" Path="~/ScriptLibrary/System.Web....

    js实现跨域访问的三种方法

    javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本获取或操作另一个域上的文档属性,下面将列出三种实现javascript跨域方法: 1.基于iframe实现跨域 基于iframe实现的跨域要求两个域...

    跨域修改iframe页面内容详解

    由于代理页与目标页同域, 所以代理页可以获取并操作目标页的document对象. 前提条件 需要将proxy.html放到与内嵌的iframe页同域的服务下, 并且可以被访问到. 使用 支持2种调用方式: 使用 postMessage 和 URL params....

    用iframe设置代理解决ajax跨域请求问题

    方案:在服务器端创建一个静态的代理页面,在客户端用iframe调用这个代理,然后通过iframe的document.getElementById(“proxy”).contentWindow对象来请求ajax。 服务器端的代理页面: 代码如下: &lt;!DOCTYPE ...

    Ajax跨域传输参数

    可以将book.aa.com用iframe添加到 www.aa.com的某个页面下,在www.aa.com和iframe里面都加上document.domain = "aa.com",这样就可以统一域了,可以实现跨域访问。就和平时同一个域中镶嵌iframe一样,直接调用里面的...

    JavaScript同源策略和跨域访问实例详解

    本文实例讲述了JavaScript同源策略和跨域访问。分享给大家供大家参考,具体如下: 1. 什么是同源策略 理解跨域首先必须要了解同源策略。同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。 何谓同源: URL由...

    AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求

     本域和子域的交互,可以通过iframe设置两个域名document.domain = "s135.com",实现统一s135.com域下的跨域访问。  本域和其他域的交互,可以通过iframe、代理、JS创建动态脚本等几种方法来实现,这里有篇文章对...

    javascript跨域方法、原理以及出现问题解决方法(详解)

    javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本获取或操作另一个域上的文档属性,下面将列出三种实现javascript跨域方法: 1.基于iframe实现跨域  基于iframe实现的跨域要求两个域...

    js操作iframe的一些方法介绍

    1. 获得iframe的window对象存在跨域访问限制。 chrome:iframeElement. contentWindowfirefox: iframeElement.contentWindowie6:iframeElement.contentWindow 文章Iframes, onload, and document.domain中说“he ...

    Jquery取得iframe下内容的方法

    在网上找了未测试解决办法 经查资料发现 ,默认情况下,浏览器是禁止 脚本跨域访问的,除非这些域之间有必须的访问信任关系。 找到问题就好办了,可以降低浏览器的安全级别,但这样对用户无疑是不利的。 所以我们...

    深入浅析同源策略和跨域访问

     理解跨域首先必须要了解同源策略。同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。  何谓同源:  URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。  同源...

    IBM WebSphere Portal门户开发笔记01

    48、JS解决COOKIE跨域访问的问题之方法一 323 49、JS禁止复制网页代码 324 50、JS 禁止剪切、复制、粘贴的文本框代码 326 51、如何禁止火狐浏览器的右键功能 327 52、IE地址栏前换成自己的图标 327 53、关闭输入法 ...

Global site tag (gtag.js) - Google Analytics