国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript使用HTML5的window.postMessage實現跨域通信例子

2024-05-06 16:03:59
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript使用HTML5的window.postMessage實現跨域通信例子,需要的朋友可以參考下

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

在同一客戶端就行,跨應用程序, 可以跨域。
window.name 保存數據以及跨域 iframe 靜態代理動態傳輸方案,充分的運用了window.name因為頁面的url改變而name不改變的特性。
各種方案網上都有很多實例代碼,大家可以自己搜索一下。

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

發送消息的”postMessage”方法

向外界窗口發送消息:

復制代碼 代碼如下:

otherWindow.postMessage(message, targetOrigin);


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

接受信息的”message”事件

復制代碼 代碼如下:


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);
}


回調函數第一個參數接收 Event 對象,有三個常用屬性:
1.data: 消息
2.origin: 消息來源地址
3.source: 源 DOMWindow 對象

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 朝阳区| 通河县| 朝阳县| 通山县| 卫辉市| 沙坪坝区| 阿拉善盟| 宁晋县| 新宾| 渑池县| 玛纳斯县| 读书| 松桃| 华阴市| 贺兰县| 平泉县| 大同市| 闻喜县| 五大连池市| 鸡东县| 赞皇县| 龙陵县| 太仆寺旗| 洱源县| 遂宁市| 新密市| 潼关县| 黄浦区| 横山县| 南投县| 绥滨县| 靖江市| 卢龙县| 元谋县| 鲁甸县| 罗江县| 满洲里市| 滦平县| SHOW| 海丰县| 山丹县|