站長資訊網
        最全最豐富的資訊網站

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


        1、同域限制

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

        2、window.postMessage方法

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

        postMessage方法的格式如下:

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

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

        假定當前網頁彈出一個新窗口。

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

        然后在當前網頁上監聽message事件。

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

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

        event對象的屬性除了origin和data,還有一個source屬性,指向向當前網頁發送信息的窗口對象。

        接著,在當前網頁上使用postMessage方法對新窗口發送信息。

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

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

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

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

        上面代碼有幾個地方需要注意。首先,receiveMessage函數里面沒有過濾信息的來源,任意網址發來的信息都會被處理。其次,postMessage方法中指定的目標窗口的網址是一個星號,表示該信息可以向任意網址發送。通常來說,這兩種做法是不推薦的,因為不夠安全,可能會被對方過濾掉。

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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 996久久国产精品线观看| 亚洲国产精品18久久久久久| 日韩福利视频精品专区| 国产精品亚洲欧美一区麻豆 | 国产高清精品在线| 国产欧美精品AAAAAA片| 亚洲欧美日韩久久精品第一区| 欧美成人精品欧美一级乱黄码| 国产精品成人小电影在线观看| 久久精品一区二区三区不卡| 99热亚洲色精品国产88| 精品性影院一区二区三区内射 | 国产精品毛片VA一区二区三区| 亚洲国产av无码精品| 久久无码人妻精品一区二区三区| 国产精品国产三级在线高清观看 | 久久精品国产精品青草app| 国产成人无码精品一区二区三区 | jizzjizz国产精品久久| 国产精品揄拍100视频| 久久精品国产亚洲AV高清热| 亚洲动漫精品无码av天堂| 宅男在线国产精品无码| 亚洲处破女AV日韩精品| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲精品自在在线观看| 日韩人妻精品一区二区三区视频| 色久综合网精品一区二区| 精品少妇无码AV无码专区| 99精品人妻无码专区在线视频区| 97精品国产手机| 久久精品成人国产午夜| 99久久精品无码一区二区毛片| 人精品影院| 欧美精品一二区| 亚洲线精品一区二区三区| 久久久国产乱子伦精品作者| 国产精品99精品无码视亚| 国内精品伊人久久久久| 亚洲嫩草影院久久精品| 国产精品无码素人福利不卡|