最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iframe跨域通信封裝詳解

 更新時間:2015年08月11日 15:21:44   作者:小夜 Clifford  
由于前端javascript對跨域訪問做了安全限制,所以javascript只能訪問與包含它的文檔在同一域名下的內(nèi)容,接下來,小編通過此篇文章給大家介紹iframe跨域通信的封裝,需要的朋友可以參考下

iframe跨域通信

查看演示        源碼下載

眾所周知,由于前端javascript對跨域訪問做了安全限制,javascript只能訪問與包含它的文檔在同一域下的內(nèi)容。

用法舉例:

需求是在http://www.demo.org/top.html中通過iframe方式嵌入http://www.iframe.com/iframe.html,而在iframe頁面中希望通過點擊一個按鈕,調(diào)用top頁面的一個js方法。

1. 在top頁面中建立方法供內(nèi)部頁面使用

復制代碼 代碼如下:

function testFun (text) {
 alert(text);
}

2. 在http://www.demo.org/top.html中嵌入iframe

復制代碼 代碼如下:

<iframe width="320" height="240" src="http://www.iframe.com/iframe.html"></iframe>

3. 建立www.demo.org域下建立一個代理頁面http://www.demo.org/proxy.html用于跨域通信使用

4. 在http://www.demo.org/proxy.html加入用于代理頁面的邏輯

5. 在http://www.iframe.com/iframe.html頁面中通過js配置代理頁面地址

復制代碼 代碼如下:

TopProxyConfig = {url:'http://www.demo.org/proxy.html'};

6. 通過kissy加載通信模塊

復制代碼 代碼如下:

KISSY.use('topproxy', function(S, TopProxy){
//執(zhí)行代碼
});

7. 在http://www.iframe.com/iframe.html通過TopProxy.call直接訪問http://www.demo.org/top.html中的方法,如

KISSY.use('topproxy', function(S, TopProxy){
 TopProxy.call('testFun', '這是一個真實的故事');
});

其中call方法的第一個參數(shù)是外部網(wǎng)頁的全局方法名,支持“.”,后面參數(shù)無限個,均傳到目標方法里去。

注:

1. 調(diào)用后可能不會立即執(zhí)行,會等到iframe加載完畢后才觸發(fā),如果想預加載可以提前執(zhí)行一個沒用的方法。
2. 如果不設(shè)置TopProxyConfig,那么會認為引用iframe和父iframe同域(大域)并直接調(diào)用top對象。
3. 在IE678下可能直接調(diào)用top中的系統(tǒng)方法會報錯,由于系統(tǒng)方法不支持apply。

原理:

A頁面嵌日的iframe頁面B,其中B想調(diào)用A的方法并傳遞數(shù)據(jù),那么可在B中嵌入A頁面同域下的一個iframe頁面C,C可以通過window.top訪問到A的window。那么在B中可以改變C的href的hash向C傳遞一些信息,然后C再把這些信息傳遞給A,從而間接達到B給A傳遞信息的目的

相關(guān)文章

最新評論

揭西县| 肥城市| 兰西县| 资兴市| 贡山| 桑植县| 密云县| 香港 | 青田县| 遂平县| 赣榆县| 随州市| 晋宁县| 章丘市| 天柱县| 连山| 庆安县| 昌黎县| 浙江省| 镇坪县| 涞水县| 贵南县| 北宁市| 黄大仙区| 郸城县| 肥东县| 大化| 会宁县| 华坪县| 壤塘县| 牟定县| 敖汉旗| 肥城市| 凯里市| 黔西县| 安西县| 南岸区| 富阳市| 金溪县| 三都| 通州区|