欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript使用HTML5的window.postMessage實(shí)現(xiàn)跨域通信例子

 更新時(shí)間:2014年04月11日 08:34:03   作者:  
這篇文章主要介紹了JavaScript使用HTML5的window.postMessage實(shí)現(xiàn)跨域通信例子,需要的朋友可以參考下

JavaScript由于同源策略的限制,跨域通信一直是棘手的問題。當(dāng)然解決方案也有很多:
1.document.domain+iframe的設(shè)置,應(yīng)用于主域相同而子域不同;
2.利用iframe和location.hash,數(shù)據(jù)直接暴露在了url中,數(shù)據(jù)容量和類型都有限
3.Flash LocalConnection, 對(duì)象可在一個(gè) SWF 文件中或多個(gè) SWF 文件間進(jìn)行通信, 只要

在同一客戶端就行,跨應(yīng)用程序, 可以跨域。
window.name 保存數(shù)據(jù)以及跨域 iframe 靜態(tài)代理動(dòng)態(tài)傳輸方案,充分的運(yùn)用了window.name因?yàn)轫撁娴膗rl改變而name不改變的特性。
各種方案網(wǎng)上都有很多實(shí)例代碼,大家可以自己搜索一下。

html5中最炫酷的API之一:就是 跨文檔消息傳輸Cross Document Messaging。高級(jí)瀏覽器Internet Explorer 8+, chrome,F(xiàn)irefox , Opera 和 Safari 都將支持這個(gè)功能。這個(gè)功能實(shí)現(xiàn)也非常簡單主要包括接受信息的”message”事件和發(fā)送消息的”postMessage”方法。

發(fā)送消息的”postMessage”方法

向外界窗口發(fā)送消息:

復(fù)制代碼 代碼如下:
otherWindow.postMessage(message, targetOrigin);

otherWindow: 指目標(biāo)窗口,也就是給哪個(gè)window發(fā)消息,是 window.frames 屬性的成員或者由 window.open 方法創(chuàng)建的窗口
參數(shù)說明:
1.message: 是要發(fā)送的消息,類型為 String、Object (IE8、9 不支持)
2.targetOrigin: 是限定消息接收范圍,不限制請(qǐng)使用 ‘*'

接受信息的”message”事件

復(fù)制代碼 代碼如下:

var onmessage = function (event) {
var data = event.data;
var origin = event.origin;
//do someing
};
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('message', onmessage, false);
} else if (typeof window.attachEvent != 'undefined') {
//for ie
window.attachEvent('onmessage', onmessage);
}

回調(diào)函數(shù)第一個(gè)參數(shù)接收 Event 對(duì)象,有三個(gè)常用屬性:
1.data: 消息
2.origin: 消息來源地址
3.source: 源 DOMWindow 對(duì)象

當(dāng)然postmessage也有一些不足的地方:
1.ie8,ie9下傳遞的數(shù)據(jù)類型值支持字符串類型,不過可以使用用 JSON對(duì)象和字符串之間的相互轉(zhuǎn)換 來解決這個(gè)問題;
2.ie6,ie7需要寫兼容方案,個(gè)人認(rèn)為window.name比較靠譜;

相關(guān)文章

  • JS的空值合并運(yùn)算符(??)的使用

    JS的空值合并運(yùn)算符(??)的使用

    空值合并運(yùn)算符是一個(gè)邏輯運(yùn)算符,當(dāng)左側(cè)的操作數(shù)為null或undefined時(shí),會(huì)返回右側(cè)操作數(shù),否則返回左側(cè)操作數(shù),本文就來詳細(xì)的介紹一下如何使用
    2023-12-12
  • 使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果

    使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果

    在ECSHOP的目錄/JS/common.js中有一個(gè)openSpeDiv方法是實(shí)現(xiàn)ECSHOP的彈窗效果的。接下來通過本文給大家分享使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果,需要的朋友參考下
    2017-03-03
  • EditPlus注冊(cè)碼生成器(js代碼實(shí)現(xiàn))

    EditPlus注冊(cè)碼生成器(js代碼實(shí)現(xiàn))

    在線的EditPlus注冊(cè)碼生成器,看了看還真是,在這里exe的注冊(cè)機(jī)病毒太多,純js的在線注冊(cè)機(jī)可就放心了,感興趣的各位可以參考下哈,希望可以幫助到你
    2013-03-03
  • JavaScript 閉包機(jī)制詳解及實(shí)例代碼

    JavaScript 閉包機(jī)制詳解及實(shí)例代碼

    這篇文章主要介紹了JavaScript 閉包機(jī)制詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 微信小程序解除10個(gè)請(qǐng)求并發(fā)限制

    微信小程序解除10個(gè)請(qǐng)求并發(fā)限制

    這篇文章主要介紹了微信小程序解除10個(gè)請(qǐng)求并發(fā)限制,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • JS支持帶x身份證號(hào)碼驗(yàn)證函數(shù)

    JS支持帶x身份證號(hào)碼驗(yàn)證函數(shù)

    身份證號(hào)碼驗(yàn)證-支持新的帶x身份證
    2008-08-08
  • View.post() 不靠譜的地方你知道多少

    View.post() 不靠譜的地方你知道多少

    本文給大家分享了view.post()方法不靠譜的地方,以及post在7.0中的差異,需要的的朋友參考下本文吧
    2017-08-08
  • babel基本使用詳解

    babel基本使用詳解

    本文主要介紹了babel基本使用。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Javascript中的every()與some()的區(qū)別和應(yīng)用小結(jié)

    Javascript中的every()與some()的區(qū)別和應(yīng)用小結(jié)

    every跟some不同點(diǎn)在于,every要判斷數(shù)組中是否每個(gè)元素都滿足條件,只有都滿足條件才返回true,只要有一個(gè)不滿足就返回false,這篇文章主要介紹了Javascript中的every()與some()的區(qū)別和應(yīng)用,需要的朋友可以參考下
    2023-05-05
  • 詳解JSON和JSONP劫持以及解決方法

    詳解JSON和JSONP劫持以及解決方法

    這篇文章主要介紹了詳解JSON和JSONP劫持以及解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論