亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > html5通過postMessage進行跨域通信的方法

html5通過postMessage進行跨域通信的方法

熱門標簽:南寧點撥外呼系統(tǒng)哪家公司做的好 鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 成都智能外呼系統(tǒng)平臺 四川點撥外呼系統(tǒng) 當涂高德地圖標注 電銷機器人電話用什么卡 云南大理400電話申請官方 江蘇智能電銷機器人哪家好 黃島區(qū)地圖標注

最近工作中遇到一個需求,場景是:h5頁作為預覽模塊內(nèi)嵌在pc頁中,用戶在pc頁中能夠做一些操作,然后h5做出響應(yīng)式變化,達到預覽的效果。

這里首先想到就是把h5頁面用iframe內(nèi)嵌到pc網(wǎng)頁中,然后pc通過postMessage方法,把變化的數(shù)據(jù)發(fā)送給iframe,iframe內(nèi)嵌的h5通過addEventListener接收數(shù)據(jù),再對數(shù)據(jù)做響應(yīng)式的變化。

這里總結(jié)一下postMessage的使用,api很簡單:

otherWindow.postMessage(message, targetOrigin, [transfer]);

otherWindow是目標窗口的引用,在當前場景下就是iframe.contentWindow;

message是發(fā)送的消息,在Gecko 6.0之前,消息必須是字符串,而之后的版本可以做到直接發(fā)送對象而無需自己進行序列化;

targetOrigin表示設(shè)定目標窗口的origin,其值可以是字符串"*"(表示無限制)或者一個URI。在發(fā)送消息的時候,如果目標窗口的協(xié)議、主機地址或端口這三者的任意一項不匹配targetOrigin提供的值,那么消息就不會被發(fā)送;只有三者完全匹配,消息才會被發(fā)送。對于保密性的數(shù)據(jù),設(shè)置目標窗口origin非常重要;

當postMessage()被調(diào)用的時,一個消息事件就會被分發(fā)到目標窗口上。該接口有一個message事件,該事件有幾個重要的屬性:

1.data:顧名思義,是傳遞來的message
2.source:發(fā)送消息的窗口對象
3.origin:發(fā)送消息窗口的源(協(xié)議+主機+端口號)

這樣就可以接收跨域的消息了,我們還可以發(fā)送消息回去,方法類似。

可選參數(shù)transfer 是一串和message 同時傳遞的 Transferable 對象. 這些對象的所有權(quán)將被轉(zhuǎn)移給消息的接收方,而發(fā)送一方將不再保有所有權(quán)。

那么,當iframe初始化后,可以通過下面代碼獲取到iframe的引用并發(fā)送消息:

// 注意這里不是要獲取iframe的dom引用,而是iframe window的引用
const iframe = document.getElementById('myIFrame').contentWindow;
iframe.postMessage('hello world', 'http://yourhost.com');

在iframe中,通過下面代碼即可接收到消息。

window.addEventListener('message', msgHandler, false);

在接收時,可以根據(jù)需要,對消息來源origin做一下過濾,避免接收到非法域名的消息導致的xss攻擊。

最后,為了代碼復用,把消息發(fā)送和接收封裝成一個類,同時模擬了消息類型的api,使用起來非常方便。具體代碼如下:

export default class Messager {
    constructor(win, targetOrigin) {
        this.win = win;
        this.targetOrigin = targetOrigin;
        this.actions = {};
        window.addEventListener('message', this.handleMessageListener, false);
    }

    handleMessageListener = event => {
        if (!event.data || !event.data.type) {
            return;
        }
        const type = event.data.type;
        if (!this.actions[type]) {
            return console.warn(`${type}: missing listener`);
        }
        this.actions[type](event.data.value);
    }

    on = (type, cb) => {
        this.actions[type] = cb;
        return this;
    }

    emit = (type, value) => {
        this.win.postMessage({
            type, value
        }, this.targetOrigin);
        return this;
    }

    destroy() {
        window.removeEventListener('message', this.handleMessageListener);
    }
}

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

標簽:十堰 咸寧 西寧 南京 淮安 佳木斯 酒泉 廣西

巨人網(wǎng)絡(luò)通訊聲明:本文標題《html5通過postMessage進行跨域通信的方法》,本文關(guān)鍵詞  html5,通過,postMessage,進行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《html5通過postMessage進行跨域通信的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于html5通過postMessage進行跨域通信的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    午夜家庭影院| 国产一区精品| 亚洲 激情| 可以免费看毛片的网站| 99久久视频| 欧美激情一区二区三区中文字幕| 精品国产三级a| 国产91精品露脸国语对白| 日本特黄特黄aaaaa大片| 青青久久网| 欧美激情伊人| 韩国三级视频网站| 麻豆污视频| 国产a一级| 精品国产一区二区三区久久久狼| 国产成人欧美一区二区三区的| 欧美激情一区二区三区在线播放 | 深夜做爰性大片中文| 99热视热频这里只有精品| 亚洲精品永久一区| 日本免费乱人伦在线观看| 国产精品123| 青青久久网| 国产伦精品一区二区三区无广告| 欧美激情一区二区三区在线| 久久99中文字幕久久| 国产精品自拍一区| 日韩专区一区| 成人免费观看视频| 欧美一级视| 免费国产在线视频| 国产欧美精品| 国产成人女人在线视频观看| 91麻豆精品国产高清在线| 久久国产影视免费精品| 精品国产一区二区三区久久久狼| 欧美激情在线精品video| 欧美另类videosbestsex视频| 沈樵在线观看福利| 国产一区二区精品久久91| 欧美激情一区二区三区视频 | 日韩女人做爰大片| 国产网站免费视频| 九九干| 一级毛片视频播放| 一 级 黄 中国色 片| 欧美大片一区| 亚洲爆爽| 色综合久久天天综合| 精品视频在线观看免费| 国产不卡福利| 久久久久久久男人的天堂| 亚洲天堂免费观看| 中文字幕97| 麻豆系列 在线视频| 99久久精品国产国产毛片| 一本高清在线| a级毛片免费观看网站| 国产麻豆精品| 久久国产一区二区| 国产亚洲免费观看| 精品国产亚洲一区二区三区| 久草免费在线观看| 一级女性全黄久久生活片| 日本伦理黄色大片在线观看网站| 青青久久国产成人免费网站| 成人免费一级纶理片| 超级乱淫伦动漫| 国产不卡精品一区二区三区| 色综合久久天天综合绕观看| 日本免费乱人伦在线观看| 欧美电影免费看大全| 免费国产一级特黄aa大片在线| 成人影视在线观看| 你懂的国产精品| 天堂网中文字幕| 成人在免费观看视频国产| 色综合久久天天综合绕观看| 亚洲 欧美 成人日韩| 日韩av成人| 麻豆网站在线看| 青青久久精品| 91麻豆精品国产自产在线观看一区| 欧美国产日韩精品| 欧美日本二区| 国产一区二区精品| 青青久久国产成人免费网站| 四虎影视库| 99色播| 国产亚洲免费观看| 精品在线免费播放| 欧美大片一区| 你懂的日韩| 久久国产一区二区| 久久成人性色生活片| 欧美另类videosbestsex高清| 91麻豆国产福利精品| 可以免费看毛片的网站| 91麻豆国产福利精品| 日韩在线观看免费| 久久成人综合网| 久久99中文字幕| 日韩免费在线| 日韩在线观看视频网站| 欧美日本免费| 日日日夜夜操| 国产一区二区精品尤物| 尤物视频网站在线观看| 可以免费看污视频的网站| 国产不卡精品一区二区三区| 欧美a级v片不卡在线观看| 国产精品自拍在线| 可以免费在线看黄的网站| 欧美激情在线精品video| 中文字幕一区二区三区 精品| 欧美激情在线精品video| 久久福利影视| 日日夜夜婷婷| 精品在线免费播放| 国产成人欧美一区二区三区的| 国产a一级| 国产福利免费视频| 国产视频一区二区在线观看| 欧美另类videosbestsex高清| 欧美国产日韩在线| 国产精品免费精品自在线观看| 国产视频一区二区在线播放| 色综合久久天天综合观看| 99色视频在线| 青青久久精品| 天天综合在线观看 | 日本伦理片网站| 精品国产一级毛片| 久久99中文字幕久久| 国产伦精品一区三区视频| 久久国产精品自由自在| 久久精品免视看国产成人2021| 欧美18性精品| 日韩在线观看免费| 麻豆系列 在线视频| 精品视频一区二区三区| 成人免费网站久久久| 欧美一级视| 91麻豆tv| 国产成人精品综合在线| 天天做日日爱| 午夜在线亚洲男人午在线| 国产一区二区精品久久91| 午夜精品国产自在现线拍| 99久久精品国产麻豆| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 毛片的网站| 国产网站免费| 午夜精品国产自在现线拍| 国产高清在线精品一区二区| 欧美a级v片不卡在线观看| 日韩免费在线视频| 韩国三级香港三级日本三级| 午夜激情视频在线播放| 高清一级淫片a级中文字幕| 国产一区免费在线观看| 国产伦久视频免费观看 视频| 国产国产人免费视频成69堂| 韩国毛片| 天天做人人爱夜夜爽2020毛片| 黄视频网站免费| 精品在线免费播放| 国产伦理精品| 亚洲爆爽| 久久成人性色生活片| 韩国三级香港三级日本三级| 欧美国产日韩在线| 日本在线www| 精品视频在线看| 亚洲第一页色| 一级女性全黄久久生活片| 国产成a人片在线观看视频| 国产麻豆精品| 国产韩国精品一区二区三区| 亚洲第一页色| 久久99爰这里有精品国产| 天天做日日干| 欧美另类videosbestsex高清| a级毛片免费观看网站| 欧美激情一区二区三区视频| 日日夜夜婷婷| 国产一区二区福利久久| 国产a视频| 日韩中文字幕在线播放| 久久国产精品自由自在| 国产国语在线播放视频| 日韩免费在线视频| 成人a级高清视频在线观看| 可以免费看污视频的网站| 四虎影视久久| 91麻豆国产| 精品国产三级a| 九九热国产视频| 可以在线看黄的网站| 国产一级强片在线观看|