前提条件:
假设有两个页面 one.html、two.html。
one.html 中有js方法 function one(){}; two.html 中有js方法 function two(){};
one.html 中有一个iframe(name=' oneframe ')嵌入了 two.html
①同域之间的访问:
假设one.html、two.html是同域的
one.html 调用 two.html 中的 two() 方法:
window.oneframe.two();
two.html 调用 one.html 中的 one() 方法:
parent.one();
②跨域之间的访问:
假设one.html、two.html是不同域的,例如www.a.com、www.b.com。
跨域访问不能用上述的方法调用了,因为浏览器的安全机制,禁用了跨域访问。
所以要实现我们的需求,需要换一种方式,其实仔细想一想,只要保证调用和被调用的页面在同域即可,
这时我们就需要用到一个中间页面来中转一下。
one.html 调用 two.html 中的 two() 方法:
先创建好一个和 two.html 同域的 tempTwo.html,页面中有初始化方法调用 two.html 中 two() 的方法。
parent.window.frameHidden.two();
在 one.html 中想调用 two() 时,只需在页面中创建一个嵌入了 tempTwo.html 的 iframe(name='frameHidden'),即可实现调用two()。
two.html 调用 one.html 中的 one() 方法:
先创建好一个和 one.html 同域的 tempOne.html,页面中有初始化方法调用 one.html 中 one () 的方法。
parent.parent.one();
在 two.html 中想调用 one() 时,只需在页面中创建一个嵌入了 tempOne.html 的 iframe(name='frameHidden'),即可实现调用one()。