Java,Jsp,模式及框架
Web技术
Web服务器
浏览器相关
SQL语言
数据库
开发环境
软件开发及管理
网站SEO
短信及邮件服务
网页设计
电脑、硬件及网络
协同管理平台问题
电子商务
前沿技术及趋势
  当前位置:首页 - 知识积累 - Web技术
iframe嵌套时js跨域互相访问
时间:2014年11月04日 

假设 A.html domain是 localhost B.html domain 是 127.0.0.1 (跨域)

这里使用 localhost 与 127.0.0.1 只是方便测试,localhost 与 127.0.0.1已经不同一个域,因此执行效果是一样的。

A.html中iframe 嵌入 B.html,name=myframe
A.html有js function fMain()
B.html有js function fIframe()
需要实现 A.html 调用 B.html 的 fIframe(),B.html 调用 A.html 的 fMain() (跨域调用)

B.html 调用 A.html 的 fMain()时

如果在B.html js方法  flframe() 中用 

function flframe(){  parent.fMain();  } 访问 A.html中的 fMain() 会有“没有权限”的错误提示。

解决方法:

因为浏览器为了安全,禁止了js不同域访问。因此只要调用与执行的双方是同域则可以相互访问(iframe是可以跨域传参的)

 

首先,A.html 如何调用B.html的 fIframe方法

1.在A.html 创建一个 iframe

2.iframe的页面放在 B.html 同域下,命名为execB.html

3.execB.html 里有调用B.html fIframe方法的js调用

这样A.html 就能通过 execB.html 调用 B.html 的 fIframe 方法了。

 

同理,B.html 需要调用A.html fMain方法,需要在B.html 嵌入与A.html 同域的 execA.html ,

execA.html 里有调用 A.html fMain 方法的js 调用(parent.parent.fMain();)

这样就能实现 A.html 与 B.html 跨域相互调用。