iframe 跨域的优雅解决方案

SueYY 发布于 2013/06/19 18:26
阅读 518
收藏 24

今天用到了iframe 跨域的东西。查了一些资料之后,加上自己的实验,终于优雅解决。。方法如下:

客户网站域名:a.com

我们的域名:b.com

需求如下,

1.需要在 a.com/a.html 中 iframe  b.com/b.html,是以弹出层的形式展现内容

2.b.html中需要产生事件,关闭a.html中的弹出层,这就发生的跨域,子页面需要触发父页面的JS函数。

解决方法:

在 a.com/ 下建立一个代理文件 ,比如 proxy.html

a.html 的弹出层函数如:pop(); 关闭函数 : hidePop();

在 b.html 页面做一个隐藏的 iframe,  

b.html 中的关闭按钮触发一个事件比如 close()

函数的内容应该是这样的

<script type="text/javascript">
<!--
	
	function close()
	{
                urlC = "a.com/proxy.html"; //设置iframeA的src
		document.getElementById("diyiframe").src = urlC;
	}


//-->
</script>

diyiframe 是在 b.html 中隐藏的iframe ID

代理文件 proxy.html的内容为

<script type="text/javascript">
<!--
	
	function closeParentPop()
	{
		parent.parent.closePlp();
	}

	 closeParentPop();

//-->
</script>

到此,跨域优雅结束。

参考文章

http://www.oschina.net/question/1092_10450

加载中
0
lsh98
lsh98
iframe代理模式
0
牛仔豆
牛仔豆
楼主是用神舟电脑的吗?
0
小邪
小邪
但是你嵌入iframe中的页面不是你能改的,或者你潜入的是外网的别人的页面,但是你又想获取用户在其中操作选择的一些参数,这时候怎么弄? 
SueYY
SueYY
如果是合作开发的话, iframe的内容可以让对方来改了。
0
雾海树妖
雾海树妖
可以用window.name来传递事件发生条件
返回顶部
顶部