站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        HTML5新特性之跨文檔消息傳輸詳解


        1、同域限制

        所謂“同域限制”是指,出于安全考慮,瀏覽器只允許腳本與同樣協(xié)議、同樣域名、同樣端口的地址進(jìn)行通信。

        2、window.postMessage方法

        瀏覽器限制不同窗口(包括iFrame窗口)之間的通信,除非兩個窗口裝載的是同一個域名下的網(wǎng)頁。window.postMessage方法就是為了解決這個問題而特定的API,可以讓不同域名的窗口互相通信。

        postMessage方法的格式如下:

        targetWindow.postMessage(message, targetURL[, transferObject]);

        上面代碼的targetWindow是指向目標(biāo)窗口的變量,message是要發(fā)送的消息,targetURL是指定目標(biāo)窗口的網(wǎng)址,不符合該網(wǎng)址就不發(fā)送信息,transferObject則是跟隨信息一起發(fā)送的Transferable對象。

        假定當(dāng)前網(wǎng)頁彈出一個新窗口。

        var popup = window.open(...popup details ...);

        然后在當(dāng)前網(wǎng)頁上監(jiān)聽message事件。

        window.addEventListener('message', receiveMessage, false);  function receiveMessage(e) {      if (e.origin != 'http://example.org') {          return;      }        console.log(e.data);  }

        上面的代碼指定message事件的回調(diào)函數(shù)是receiveMessage,一旦收到其他窗口發(fā)來的信息,receiveMessage函數(shù)就會被調(diào)用。receiveMessage函數(shù)接受一個event事件對象作為參數(shù),該參數(shù)里的origin屬性表示信息的來源網(wǎng)址,如果該網(wǎng)址不符合要求,就立刻返回。event.data屬性則包含了實(shí)際發(fā)送過來的信息。

        event對象的屬性除了origin和data,還有一個source屬性,指向向當(dāng)前網(wǎng)頁發(fā)送信息的窗口對象。

        接著,在當(dāng)前網(wǎng)頁上使用postMessage方法對新窗口發(fā)送信息。

        popup.postMessage('hello world!', 'http://example.org');

        上面代碼的postMessage方法的第一個參數(shù)是實(shí)際發(fā)送的信息,第二個參數(shù)是指定發(fā)送對象的域名必須是http://example.org。如果對方窗口不是這個域名,信息不會發(fā)送出去。

        最后,在popup窗口中部署下面的代碼。

        //popup 窗口function receiveMessage(event) {      event.source.postMessage('Nice to see you!', '*');  }    window.addEvengtListener('message', receiveMessage, false);

        上面代碼有幾個地方需要注意。首先,receiveMessage函數(shù)里面沒有過濾信息的來源,任意網(wǎng)址發(fā)來的信息都會被處理。其次,postMessage方法中指定的目標(biāo)窗口的網(wǎng)址是一個星號,表示該信息可以向任意網(wǎng)址發(fā)送。通常來說,這兩種做法是不推薦的,因?yàn)椴粔虬踩赡軙粚Ψ竭^濾掉。

        所有瀏覽器都支持這個方法,但是IE8和IE9只允許postMessage方法與iFrame窗口通信,不能與新窗口通信。IE10允許與新窗口通信,但是只能使用IE特有的MessageChannel對象

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 欧美XXXX黑人又粗又长精品| 久久66热人妻偷产精品9| 日韩精品无码专区免费播放| 色综合久久精品中文字幕首页| 精品综合久久久久久88小说| 精品国产v无码大片在线观看| 欧美精品VIDEOSSEX少妇| 国产日韩久久久精品影院首页| 麻豆精品| 成人国产精品一区二区视频| 55夜色66夜色国产精品视频| 中国国产精品| 无码人妻精品一区二区蜜桃百度| 亚洲AV乱码久久精品蜜桃| 国产久爱免费精品视频| 中文精品一卡2卡3卡4卡| 精品国产一区二区三区久久久狼| 柠檬福利精品视频导航| 国产99视频精品免费专区| 热re99久久精品国99热| 呦交小u女国产精品视频| 麻豆精品国产自产在线观看一区| 久久国产精品无码HDAV| 亚洲综合无码精品一区二区三区| 国产精品亚洲片夜色在线| 精品欧洲AV无码一区二区男男| 6080亚洲精品午夜福利| 精品九九人人做人人爱| 91麻豆国产福利精品| 国内精品伊人久久久久av一坑| 91精品婷婷国产综合久久| 国产精品第13页| 高清免费久久午夜精品| 国产成人精品手机在线观看| 亚洲午夜福利精品无码| 亚洲精品无码久久久久AV麻豆| 日韩精品在线免费观看| 精品久久久久久久久中文字幕| 亚洲国产精品成人AV无码久久综合影院 | 欧美精品一二区| 精品久久久久久无码人妻热|