婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解使用postMessage解決iframe跨域通信問題

詳解使用postMessage解決iframe跨域通信問題

熱門標(biāo)簽:惡搞電話機(jī)器人 電話機(jī)器人技術(shù) 地圖標(biāo)注軟件打印出來 欣鼎電銷機(jī)器人 效果 高德地圖標(biāo)注商戶怎么標(biāo) 黃石ai電銷機(jī)器人呼叫中心 ok電銷機(jī)器人 智能電銷機(jī)器人被禁用了么 如何查看地圖標(biāo)注

這周碰到一個(gè)讓人頭疼的需求:要在我的web項(xiàng)目中嵌入另一個(gè)第三方web項(xiàng)目。第一時(shí)間想到的就是用iframe了,但問題來了,我和第三方web項(xiàng)目是有交互的,這就違反同源策略了,處理跨域問題是最讓人頭疼的事之一。

需求是這樣的,在我的頁面點(diǎn)擊一些按鈕,要實(shí)時(shí)反饋到iframe子頁面,子頁面再進(jìn)行響應(yīng)。

當(dāng)時(shí)腦子里第一時(shí)間想到的解決方案是:用NGINX把兩個(gè)項(xiàng)目代理到同一域名下。但這樣似乎有點(diǎn)小題大做了,有沒有更方便快捷的方法呢?

在window對象下有個(gè)postMessage方法,是專門用來解決跨域通信問題的。

關(guān)于postMessage的詳細(xì)介紹請戳這里,不過MDN的文檔太詳細(xì)了,導(dǎo)致有些同學(xué)看完還是一臉懵逼,下面我們就來看看怎么用postMessage實(shí)現(xiàn)iframe跨域通信,當(dāng)你會用了之后再回去看文檔,感覺是完全不同的。

首先我們模擬場景,假設(shè)有兩個(gè)不同源的頁面,iframePage.html是index.html的子頁面:

<!-- index.html -->

<body style="border:5px solid #333;">

  <h1>this is index</h1>

  <iframe src="./iframePage.html" id='myframe'></iframe>

</body>
<!-- iframePage -->

<body style="border:5px solid #333;">

  <h1>this is iframePage</h1>

</body>

現(xiàn)在這兩個(gè)iframe是無法通信,因?yàn)樗鼈兪遣煌吹模僭O(shè)存在跨域問題),這時(shí)候就要用到postMessage了。

我們先試著從父頁面向子頁面發(fā)送一條消息:

// idnex.html

//獲取iframe元素
iFrame = document.getElementById('myframe')

//iframe加載完畢后再發(fā)送消息,否則子頁面接收不到message
iFrame.onload = function(){

  //iframe加載完立即發(fā)送一條消息
  iFrame.contentWindow.postMessage('MessageFromIndex1','*');

}

我們知道postMessage是掛載在window對象上的,所以等iframe加載完畢后,用iFrame.contentWindow獲取到iframe的window對象,然后調(diào)用postMessage方法,相當(dāng)于給子頁面發(fā)送了一條消息。

postMessage方法第一個(gè)參數(shù)是要發(fā)送的數(shù)據(jù),可以是任何原始類型的數(shù)據(jù)。

Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)之前,第一個(gè)參數(shù)必須是一個(gè)字符串。

postMessage方法第二個(gè)參數(shù)可以設(shè)置要發(fā)送到哪個(gè)url,如果當(dāng)前子頁面的url和設(shè)置的不一致,則會發(fā)送失敗,我們設(shè)置為*,代表所有url都允許發(fā)送。

postMessage方法還有第三個(gè)參數(shù),屬于高級用法,這里不做討論,可以稍后去MDN了解。

消息發(fā)送到iframePage.html,我們來接收message:

// iframePage.html

//回調(diào)函數(shù)
function receiveMessageFromIndex ( event ) {
  console.log( 'receiveMessageFromIndex', event )
}

//監(jiān)聽message事件
window.addEventListener("message", receiveMessageFromIndex, false);

我們只需要在子頁面監(jiān)聽message事件,并且設(shè)置好回調(diào)函數(shù)即可,來看看打印出來的event:

event對象中的data屬性存放著我們從父頁面?zhèn)鬟^來的數(shù)據(jù),就這么簡單!

讓我們再試試從子頁面發(fā)送數(shù)據(jù)給父頁面:

// iframePage.html

//給父頁面發(fā)送消息,data為對象
parent.postMessage( {msg: 'MessageFromIframePage'}, '*');

父頁面接收數(shù)據(jù):

//index.html

//回調(diào)函數(shù)
function receiveMessageFromIframePage (event) {
    console.log('receiveMessageFromIframePage', event)
}

//監(jiān)聽message事件
window.addEventListener("message", receiveMessageFromIframePage, false);

我看看到,的確可以傳輸不同的數(shù)據(jù),此時(shí)data為一個(gè)對象:

大家可以到postMessage-demo把代碼clone下來運(yùn)行試試看。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:盤錦 綏化 中山 聊城 萍鄉(xiāng) 赤峰 阿壩 金昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解使用postMessage解決iframe跨域通信問題》,本文關(guān)鍵詞  詳解,使用,postMessage,解決,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解使用postMessage解決iframe跨域通信問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解使用postMessage解決iframe跨域通信問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91麻豆精品国产综合久久久久久| 99久久国产综合精品女不卡| 韩国女主播一区| 欧美区在线观看| 亚洲国产精品尤物yw在线观看| 欧美一级生活片| 亚洲国产精品久久艾草纯爱| 色哟哟欧美精品| 亚洲人快播电影网| 91成人免费电影| 亚洲午夜久久久久| 日韩欧美资源站| 国产在线视频不卡二| 2019国产精品| 国产老女人精品毛片久久| 亚洲精品在线电影| 国产成人啪免费观看软件 | 国产精品素人视频| 久久久不卡网国产精品二区| 美女诱惑一区二区| 国产日韩欧美激情| 91一区一区三区| 亚洲午夜精品在线| 亚洲精品一区在线观看| 99这里都是精品| 亚洲影院在线观看| 欧美xxxx在线观看| 风间由美性色一区二区三区| 曰韩精品一区二区| 欧美一区永久视频免费观看| 国产精品1区二区.| 久久精品999| 国产精品1区2区3区在线观看| 中文字幕一区二区三区在线播放| 91传媒视频在线播放| 精品午夜一区二区三区在线观看| 亚洲精品乱码久久久久久 | 国产乱色国产精品免费视频| 国产精品午夜久久| 色哦色哦哦色天天综合| 国产乱码精品一区二区三| 亚洲欧美aⅴ...| 国产性天天综合网| 91精品国产综合久久久久久| 成人av第一页| 激情五月播播久久久精品| 亚洲综合成人在线视频| 国产中文字幕精品| 亚洲综合av网| 亚洲欧洲无码一区二区三区| 国产亚洲欧美日韩在线一区| 在线观看亚洲成人| 国产成人啪午夜精品网站男同| 天天色天天操综合| 亚洲一区二区三区视频在线播放 | 欧美一区二区三区播放老司机| 国产精品1区2区3区在线观看| 日本欧美加勒比视频| 亚洲精品综合在线| 欧美日韩一区中文字幕| www.成人在线| av在线这里只有精品| 成人久久久精品乱码一区二区三区 | 7777精品伊人久久久大香线蕉超级流畅 | 人妖欧美一区二区| 亚洲黄色免费网站| 综合色中文字幕| 欧美国产精品中文字幕| 中文字幕精品一区二区精品绿巨人 | 欧美性受极品xxxx喷水| 国产.欧美.日韩| 99re在线精品| 欧美性做爰猛烈叫床潮| 欧美伊人久久久久久午夜久久久久| 91色.com| 91精品福利在线一区二区三区| 亚洲国产精品人人做人人爽| 婷婷开心激情综合| 裸体在线国模精品偷拍| 狠狠色综合日日| 盗摄精品av一区二区三区| 成av人片一区二区| 在线中文字幕一区| 欧美一区二区三区播放老司机| 久久久久久黄色| 亚洲欧洲综合另类在线| 手机精品视频在线观看| 韩国精品久久久| 成人av中文字幕| 欧美日韩在线亚洲一区蜜芽| 久久综合五月天婷婷伊人| 国产日本亚洲高清| 亚洲精品国产精品乱码不99| 日韩视频中午一区| 中日韩av电影| 日韩一区精品字幕| 成人亚洲精品久久久久软件| 欧美色爱综合网| 久久亚洲综合色| 亚洲男人的天堂在线观看| 日本亚洲欧美天堂免费| 成人激情av网| 日韩欧美成人激情| 亚洲精品乱码久久久久久黑人| 国内不卡的二区三区中文字幕| 91蜜桃免费观看视频| 欧美大片拔萝卜| 亚洲国产中文字幕在线视频综合 | 亚洲欧美日韩国产手机在线 | 亚洲一区二区三区四区的| 麻豆一区二区在线| 色综合婷婷久久| 精品国产精品一区二区夜夜嗨| 日韩一区有码在线| 蜜桃视频在线观看一区二区| 99re热这里只有精品免费视频| 日韩一区二区免费在线观看| 日韩美女啊v在线免费观看| 麻豆91在线观看| 欧美人与禽zozo性伦| 国产成人免费视频网站高清观看视频| 91在线视频播放地址| 日韩视频永久免费| 亚洲国产aⅴ天堂久久| 成人av电影在线网| 精品国产91久久久久久久妲己| 一区二区在线观看视频| 波多野结衣亚洲一区| 国产欧美日韩三区| 久久疯狂做爰流白浆xx| 欧美喷水一区二区| 亚洲成a人v欧美综合天堂| 色综合久久久久综合99| 中文字幕在线观看不卡| 99精品久久99久久久久| 国产在线播放一区| 亚洲色图一区二区三区| 国产凹凸在线观看一区二区| 精品国产伦一区二区三区免费| 偷偷要91色婷婷| 欧美狂野另类xxxxoooo| 午夜精品免费在线| **性色生活片久久毛片| 99在线精品免费| 亚洲视频一区二区免费在线观看| 成年人午夜久久久| 亚洲天堂av一区| 欧美在线高清视频| 午夜视频在线观看一区| 日韩午夜精品电影| 国产91清纯白嫩初高中在线观看| 欧美国产精品久久| 91色婷婷久久久久合中文| 一区二区三区资源| 51久久夜色精品国产麻豆| 日韩欧美一区二区在线视频| 久久精工是国产品牌吗| 国产香蕉久久精品综合网| 不卡视频一二三| 亚洲综合在线视频| 日韩视频在线观看一区二区| 东方欧美亚洲色图在线| 亚洲精品国产成人久久av盗摄| 7777精品伊人久久久大香线蕉完整版| 另类中文字幕网| 国产精品久久久久久久久免费相片| 色伊人久久综合中文字幕| 日韩电影在线免费| 国产欧美日产一区| 欧美性猛交xxxx乱大交退制版 | 日韩精品亚洲专区| 日韩免费视频一区| 不卡视频一二三| 日本一道高清亚洲日美韩| 国产精品色噜噜| 在线播放日韩导航| 成熟亚洲日本毛茸茸凸凹| 一区二区三区在线免费视频| 精品久久国产字幕高潮| 色婷婷久久久亚洲一区二区三区| 天堂一区二区在线免费观看| 欧美国产一区在线| 日韩亚洲国产中文字幕欧美| 亚洲精品视频免费看| 国产成人综合在线| 亚洲成人av电影| 国产精品久久久久影院亚瑟| 4438x成人网最大色成网站| eeuss影院一区二区三区 | 一区视频在线播放| 欧美一区二区三区小说| 91在线观看免费视频| 国产综合久久久久久久久久久久| 亚洲第一成年网| 亚洲乱码国产乱码精品精98午夜| 精品福利一二区| 日韩欧美国产三级| 91.麻豆视频| 在线不卡免费av| 欧美日韩午夜影院|