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

主頁(yè) > 知識(shí)庫(kù) > html5 postMessage解決跨域、跨窗口消息傳遞方案

html5 postMessage解決跨域、跨窗口消息傳遞方案

熱門標(biāo)簽:高德地圖標(biāo)注賓館位置 杭州營(yíng)銷電銷機(jī)器人供應(yīng)商 聯(lián)通400電話申請(qǐng) 百應(yīng)電銷機(jī)器人產(chǎn)業(yè) 西寧智能外呼系統(tǒng)加盟 電視購(gòu)物電銷外呼系統(tǒng) 電話機(jī)器人如何 飛亞外呼系統(tǒng) 貸款電銷人工和機(jī)器人哪個(gè)好

平時(shí)做web開(kāi)發(fā)的時(shí)候關(guān)于消息傳遞,除了客戶端與服務(wù)器傳值還有幾個(gè)經(jīng)常會(huì)遇到的問(wèn)題

1.頁(yè)面和其打開(kāi)的新窗口的數(shù)據(jù)傳遞

2.多窗口之間消息傳遞

3.頁(yè)面與嵌套的iframe消息傳遞

4.上面三個(gè)問(wèn)題的跨域數(shù)據(jù)傳遞

postMessage()

這些問(wèn)題都有一些解決辦法,但html5引入的message的API可以更方便、有效、安全的解決這些難題。postMessage()方法允許來(lái)自不同源的腳本采用異步方式進(jìn)行有限的通信,可以實(shí)現(xiàn)跨文本檔、多窗口、跨域消息傳遞。

postMessage(data,origin)方法接受兩個(gè)參數(shù)

 1.data:要傳遞的數(shù)據(jù),html5規(guī)范中提到該參數(shù)可以是JavaScript的任意基本類型或可復(fù)制的對(duì)象,然而并不是所有瀏覽器都做到了這點(diǎn)兒,部分瀏覽器只能處理字符串參數(shù),所以我們?cè)趥鬟f參數(shù)的時(shí)候需要使用JSON.stringify()方法對(duì)對(duì)象參數(shù)序列化,在低版本IE中引用json2.js可以實(shí)現(xiàn)類似效果。

2.origin:字符串參數(shù),指明目標(biāo)窗口的源,協(xié)議+主機(jī)+端口號(hào)[+URL],URL會(huì)被忽略,所以可以不寫,這個(gè)參數(shù)是為了安全考慮,postMessage()方法只會(huì)將message傳遞給指定窗口,當(dāng)然如果愿意也可以建參數(shù)設(shè)置為"*",這樣可以傳遞給任意窗口,如果要指定和當(dāng)前窗口同源的話設(shè)置為"/"。

http://test.com/index.html

<div style="width:200px; float:left; margin-right:200px;border:solid 1px #333;">
        <div id="color">Frame Color</div>
    </div>
    <div>
        <iframe id="child" src="http://lsLib.com/lsLib.html"></iframe>
 </div>

我們可以在http://test.com/index.html通過(guò)postMessage()方法向跨域的iframe頁(yè)面http://lsLib.com/lsLib.html傳遞消息

window.onload=function(){
            window.frames[0].postMessage('getcolor','http://lslib.com');
        }

接收消息

test.com上面的頁(yè)面向lslib.com發(fā)送了消息,那么在lslib.com頁(yè)面上如何接收消息呢,監(jiān)聽(tīng)window的message事件就可以

http://lslib.com/lslib.html

window.addEventListener('message',function(e){
                if(e.source!=window.parent) return;
                var color=container.style.backgroundColor;
                window.parent.postMessage(color,'*');
            },false);

這樣我們就可以接收任何窗口傳遞來(lái)的消息了,為了安全起見(jiàn),我們利用這時(shí)候的MessageEvent對(duì)象判斷了一下消息源,MessageEvent是一個(gè)這樣的東東

有幾個(gè)重要屬性

1.data:顧名思義,是傳遞來(lái)的message

2.source:發(fā)送消息的窗口對(duì)象

3.origin:發(fā)送消息窗口的源(協(xié)議+主機(jī)+端口號(hào))

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

簡(jiǎn)單的demo

在這個(gè)例子中,左邊的div會(huì)根據(jù)右邊iframe內(nèi)div顏色變化而變化

<!DOCTYPE html>
<html>
<head>
    <title>Post Message</title>
</head>
<body>
    <div style="width:200px; float:left; margin-right:200px;border:solid 1px #333;">
        <div id="color">Frame Color</div>
    </div>
    <div>
        <iframe id="child" src="http://lsLib.com/lsLib.html"></iframe>
    </div>

    <script type="text/javascript">

        window.onload=function(){
            window.frames[0].postMessage('getcolor','http://lslib.com');
        }

        window.addEventListener('message',function(e){
            var color=e.data;
            document.getElementById('color').style.backgroundColor=color;
        },false);
    </script>
</body>
</html>

http://test.com/index.html
<!doctype html>
<html>
    <head>
        <style type="text/css">
            html,body{
                height:100%;
                margin:0px;
            }
        </style>
    </head>
    <body style="height:100%;">
        <div id="container" onclick="changeColor();" style="widht:100%; height:100%; background-color:rgb(204, 102, 0);">
            click to change color
        </div>
        <script type="text/javascript">
            var container=document.getElementById('container');

            window.addEventListener('message',function(e){
                if(e.source!=window.parent) return;
                var color=container.style.backgroundColor;
                window.parent.postMessage(color,'*');
            },false);

            function changeColor () {            
                var color=container.style.backgroundColor;
                if(color=='rgb(204, 102, 0)'){
                    color='rgb(204, 204, 0)';
                }else{
                    color='rgb(204,102,0)';
                }
                container.style.backgroundColor=color;
                window.parent.postMessage(color,'*');
            }
        </script>
    </body>
</html>

http://lslib.com/lslib.html

在例子中頁(yè)面加載的時(shí)候主頁(yè)面向iframe發(fā)送’getColor‘ 請(qǐng)求(參數(shù)沒(méi)實(shí)際用處)

window.onload=function(){
            window.frames[0].postMessage('getcolor','http://lslib.com');
        }

 iframe接收消息,并把當(dāng)前顏色發(fā)送給主頁(yè)面呢

window.addEventListener('message',function(e){
                if(e.source!=window.parent) return;
                var color=container.style.backgroundColor;
                window.parent.postMessage(color,'*');
            },false);

 主頁(yè)面接收消息,更改自己div顏色

window.addEventListener('message',function(e){
            var color=e.data;
            document.getElementById('color').style.backgroundColor=color;
        },false);

 當(dāng)點(diǎn)擊iframe事觸發(fā)其變色方法,把最新顏色發(fā)送給主頁(yè)面

function changeColor () {            
                var color=container.style.backgroundColor;
                if(color=='rgb(204, 102, 0)'){
                    color='rgb(204, 204, 0)';
                }else{
                    color='rgb(204,102,0)';
                }
                container.style.backgroundColor=color;
                window.parent.postMessage(color,'*');
            }

主頁(yè)面還是利用剛才監(jiān)聽(tīng)message事件的程序處理自身變色

window.addEventListener('message',function(e){
            var color=e.data;
            document.getElementById('color').style.backgroundColor=color;
        },false);

最后

很簡(jiǎn)單的用法卻解決了大問(wèn)題,據(jù)說(shuō)Facebook已經(jīng)在使用了,而且這也是html5另一個(gè)API——web workers傳遞消息的方法,那么它的瀏覽器兼容性怎么樣呢?所謂瀏覽器兼容性幾乎變成了IE幾開(kāi)始支持的問(wèn)題了。。。不過(guò)好消息是跟localStorage一樣,IE8+都支持了,只不過(guò)有些瀏覽器的低版本(比如FireFox4.0)并不支持window.onmessage=function(){}這種寫法,所以我么最好使用事件綁定的寫法,為了兼容IE,也要判斷是否支持addEventListener。

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

標(biāo)簽:晉中 撫州 玉溪 邯鄲 內(nèi)蒙古 牡丹江 安慶 煙臺(tái)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《html5 postMessage解決跨域、跨窗口消息傳遞方案》,本文關(guān)鍵詞  html5,postMessage,解決,跨域,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《html5 postMessage解決跨域、跨窗口消息傳遞方案》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于html5 postMessage解決跨域、跨窗口消息傳遞方案的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日本一区二区成人| 成人免费视频网站在线观看| 亚洲同性gay激情无套| 国产精品1区二区.| 欧美另类高清zo欧美| 亚洲伦在线观看| 懂色av噜噜一区二区三区av| 精品国产精品网麻豆系列| 亚洲高清在线精品| 色综合久久久久综合体| 国产免费观看久久| 国产伦精一区二区三区| 国产亚洲欧美在线| 成人av网站免费观看| 1024亚洲合集| 不卡影院免费观看| 国产精品精品国产色婷婷| 波多野洁衣一区| 亚洲男人天堂av| 欧美日韩精品久久久| 日韩高清中文字幕一区| 亚洲女人的天堂| 一区二区三区在线视频免费观看| 91麻豆国产自产在线观看| 最新热久久免费视频| 91色婷婷久久久久合中文| 成人欧美一区二区三区白人 | 国产精品每日更新在线播放网址| 日本sm残虐另类| 久久精品视频网| 日本久久电影网| 国产在线视视频有精品| 怡红院av一区二区三区| 91精品国产综合久久久久久漫画| 久久99精品一区二区三区三区| 日韩欧美国产精品一区| 国产成人综合在线播放| 日韩伦理免费电影| 欧美一区二区女人| 91视频免费播放| 日韩成人一级片| 欧美高清一级片在线观看| 欧美影院精品一区| 国产一区在线不卡| 视频一区视频二区在线观看| 中文字幕一区二区三区色视频| 91精品一区二区三区在线观看| av一区二区三区黑人| 日产国产高清一区二区三区| 亚洲欧洲国产日韩| 26uuu国产电影一区二区| 91极品视觉盛宴| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 首页亚洲欧美制服丝腿| 欧美激情一区不卡| 日韩欧美电影在线| 日本中文字幕一区| 亚洲尤物视频在线| 亚洲欧洲韩国日本视频| 欧美国产一区二区| 国产精品久99| 国产精品第四页| 欧美r级电影在线观看| 欧美精品1区2区| 欧美色成人综合| 97久久精品人人做人人爽| 国产99久久久久久免费看农村| 免费在线观看一区| 免费在线观看一区| 免费xxxx性欧美18vr| 夜夜精品视频一区二区| 亚洲欧美激情在线| 国产一区二区精品久久99| 首页亚洲欧美制服丝腿| 亚洲一二三区不卡| 亚洲一二三四在线观看| 亚洲另类春色校园小说| 中文字幕的久久| 中文字幕一区二区视频| 欧美国产日韩精品免费观看| 欧美电视剧在线看免费| 精品久久久久香蕉网| 337p粉嫩大胆噜噜噜噜噜91av| 久久这里只有精品视频网| 26uuu精品一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲成av人**亚洲成av**| 一区二区三区视频在线看| 亚洲国产精品自拍| 美洲天堂一区二卡三卡四卡视频| 久久66热re国产| 国产a视频精品免费观看| 成人h动漫精品一区二区| 99精品在线免费| 欧美丝袜丝nylons| 精品国产3级a| 亚洲精品欧美激情| 裸体健美xxxx欧美裸体表演| 国产盗摄一区二区三区| 日本久久精品电影| 亚洲精品一区二区三区在线观看 | 日本v片在线高清不卡在线观看| 久久超碰97中文字幕| 国产毛片精品一区| 99久久精品国产一区二区三区| 欧美色精品天天在线观看视频| 欧美变态tickle挠乳网站| 国产精品盗摄一区二区三区| 亚洲bdsm女犯bdsm网站| 精品一区二区三区免费观看| 日韩码欧中文字| 亚洲色图制服丝袜| 婷婷一区二区三区| 成人国产精品免费观看动漫| 精品视频免费在线| 中文字幕一区二区三区乱码在线| 亚洲成a人v欧美综合天堂下载| 懂色av一区二区在线播放| 欧美丰满少妇xxxbbb| 综合自拍亚洲综合图不卡区| 亚洲一区免费视频| 成人午夜又粗又硬又大| 91精品国产入口在线| 亚洲综合在线免费观看| 成人免费观看av| 久久精品男人天堂av| 亚洲一二三区视频在线观看| 成人av网址在线| 欧美va在线播放| 在线观看日韩一区| 亚洲bdsm女犯bdsm网站| 午夜视频久久久久久| 成人网在线免费视频| 日韩亚洲欧美一区二区三区| 国产精品欧美精品| 激情综合色播激情啊| 欧美日韩高清影院| 一区二区三区中文在线| 91污片在线观看| 久久久91精品国产一区二区精品| 日本sm残虐另类| 欧美一区二区三区啪啪| 午夜精品免费在线观看| www.一区二区| 国产精品免费免费| 不卡的看片网站| 中文字幕制服丝袜一区二区三区| 国产一区在线不卡| 国产嫩草影院久久久久| 国产成人精品网址| 中文字幕欧美三区| av网站免费线看精品| 日韩毛片在线免费观看| 91啪亚洲精品| 亚洲成人先锋电影| 91精品国产色综合久久久蜜香臀| 日本不卡在线视频| 精品国产一区二区在线观看| 麻豆视频观看网址久久| 久久免费偷拍视频| 国产剧情在线观看一区二区| 久久久三级国产网站| 国产成人在线视频网站| 亚洲国产精品v| 91福利在线播放| 日本午夜一本久久久综合| 精品久久国产字幕高潮| 懂色av一区二区三区免费观看| 国产精品毛片大码女人| 在线观看日韩一区| 极品美女销魂一区二区三区| 国产精品美女一区二区在线观看| 色婷婷精品大在线视频 | 国产一区91精品张津瑜| 欧美韩日一区二区三区| 色成年激情久久综合| 日产精品久久久久久久性色| 久久精品亚洲一区二区三区浴池| 成人高清伦理免费影院在线观看| 亚洲品质自拍视频| 91精品国产综合久久精品| 69堂亚洲精品首页| 国产91精品入口| 五月激情综合婷婷| 中文字幕精品一区| 91精品国产综合久久久久久久| 成人国产视频在线观看| 美国毛片一区二区| 亚洲免费观看在线视频| 欧美videossexotv100| 在线看国产一区二区| 国产福利91精品一区二区三区| 亚洲第一激情av| 亚洲欧美综合另类在线卡通| 日韩一区二区免费视频| 91国产丝袜在线播放| 国产69精品久久久久毛片 | 欧美喷潮久久久xxxxx| 亚洲成av人片在www色猫咪| 国产日韩欧美电影|