日期:2014-05-16 浏览次数:20314 次
这种方法比上面两种稍微繁琐一点,原理如下:
www.a.com下的a.html想和www.b.com下的b.html通信(在a.html中动态创建一个b.html的iframe来发送请求);
但是由于“同源策略”的限制他们无法进行交流(b.html无法返回数据),于是就找个中间人:www.a.com下的c.html(注意是www.a.com下的);
b.html将数据传给c.html(b.html中创建c.html的iframe),由于c.html和a.html同源,于是可通过c.html将返回的数据传回给a.html,从而达到跨域的效果。
三个页面之间传递参数用的是location.hash(也就是www.a.html#sayHello后面的'#sayHello'),改变hash并不会导致页面刷新(这点很重要)。
具体代码如下:
www.a.com/a.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//通过动态创建iframe的hash发送请求 function sendRequest(){
?? var ifr = document.createElement( 'iframe' );
?? ifr.style.display = 'none' ;
?? //跨域发送请求给b.html, 参数是sayHello
?? ifr.src = 'http://www.b.com/b.html#sayHello' ;
?? document.body.appendChild(ifr);
} //获取返回值的方法 function checkHash() {
?? var data = location.hash ?
????? location.hash.substring(1) : '' ; <
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|