




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第使用window.postMessage()方法在兩個網(wǎng)頁間傳遞數(shù)據(jù)目錄說明發(fā)送端postMessage程序發(fā)送消息的基本語法:targetWindowmessagetargetOrigintransfer接收端完整程序發(fā)送程序接收程序
說明
window.postMessage()方法可以安全地實現(xiàn)Window對象之間的跨域通信。例如,在一個頁面和它生成的彈出窗口之間,或者是頁面和嵌入其中的iframe之間。
通常情況下,不同頁面上的腳本允許彼此訪問,當(dāng)且僅當(dāng)它們源自的頁面共享相同的協(xié)議,端口號和主機(也稱為同源策略)。window.postMessage()提供了一個受控的機制來安全地規(guī)避這個限制(如果使用得當(dāng)?shù)脑挘?/p>
一般來說,一個窗口可以獲得對另一個窗口的引用(例如,通過targetWindow=window.opener),然后使用targetWindow.postMessage()在其上派發(fā)MessageEvent。接收窗口隨后可根據(jù)需要自行處理此事件。傳遞給window.postMessage()的參數(shù)通過事件對象暴露給接收窗口。
發(fā)送端
postMessage程序
varreceiver=document.getElementById('receiver').contentWindow;
varbtn=document.getElementById('send');
btn.addEventListener('click',function(e){
e.preventDefault();
varval=document.getElementById('text').value;
receiver.postMessage("Hello"+val+"!","");
});
發(fā)送消息的基本語法:
targetWindow.postMessage(message,targetOrigin,[transfer]);
targetWindow
targetWindow就是接收消息的窗口的引用。獲得該引用的方法包括:
Window.openWindow.openerHTMLIFrameElement.contentWindowWindow.parentWindow.frames+索引值
message
message就是要發(fā)送到目標(biāo)窗口的消息。數(shù)據(jù)使用結(jié)構(gòu)化克隆算法進(jìn)行序列化。這意味著我們可以將各種各樣的數(shù)據(jù)對象安全地傳遞到目標(biāo)窗口,而無需自己對其進(jìn)行序列化。
targetOrigin
targetOrigin就是指定目標(biāo)窗口的來源,必須與消息發(fā)送目標(biāo)相一致,可以是字符串*或URI。*表示任何目標(biāo)窗口都可接收,為安全起見,請一定要明確提定接收方的URI。
transfer
transfer是可選參數(shù)
接收端
目標(biāo)窗口通過執(zhí)行下面的JavaScript來偵聽發(fā)送過來的消息:
window.addEventListener("message",receiveMessage,false);
functionreceiveMessage(event){
if(event.origin!=="")
return;
}
event對象有三個屬性,分別是origin,data和source。event.data表示接收到的消息;event.origin表示postMessage的發(fā)送來源,包括協(xié)議,域名和端口;event.source表示發(fā)送消息的窗口對象的引用;我們可以用這個引用來建立兩個不同來源的窗口之間的雙向通信。
完整程序
發(fā)送程序
!DOCTYPEHTML
html
head
metacharset="utf-8"
title42度空間-window.postMessage()跨域消息傳遞/title
/head
body
div
inputid="text"type="text"value="42度空間"/
buttonid="send"發(fā)送消息/button
/div
iframeid="receiver"src="/static/html/receiver.html"width="500"height="60"
p你的瀏覽器不支持IFrame。/p
/iframe
script
window.onload=function(){
varreceiver=document.getElementById('receiver').contentWindow;
varbtn=document.getElementById('send');
btn.addEventListener('click',function(e){
e.preventDefault();
varval=document.getElementById('text').value;
receiver.postMessage("Hello"+val+"!","");
/script
/body
/html
接收程序
!DOCTYPEHTML
html
head
metacharset="utf-8"
title42度空間-從接收消息/title
/head
body
divid="message"
HelloWorld!
/div
script
window.onload=function(){
varmessageEle=document.getElementById('message');
window.addEventListener('message',function(e){
alert(e.origin);
if(e.origin!==""){
return;
messageEle.inner
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療影像資料區(qū)塊鏈版權(quán)管理方案
- 中國文化概論的歷史背景試題及答案
- 《小數(shù)加減混合運算》課件
- 文化活動豐富員工生活計劃
- 物質(zhì)構(gòu)成的秘密:基本微粒與分子課件
- 醫(yī)療AI倫理準(zhǔn)則的制定與實踐
- 智能家居系統(tǒng)安裝與調(diào)試培訓(xùn)課件
- 2025年經(jīng)濟(jì)法考試難點試題及答案歸納
- 自考行政管理社會服務(wù)問題題及答案
- 幼兒口鼻異物安全教育
- 2025山東青島東鼎產(chǎn)業(yè)發(fā)展集團(tuán)限公司招聘22人易考易錯模擬試題(共500題)試卷后附參考答案
- 湖北省宜昌市2023~2024學(xué)年高二數(shù)學(xué)下學(xué)期5月聯(lián)合測評試題含答案
- 2025年陜西省高中學(xué)業(yè)水平合格性考試歷史模擬試卷(含答案)
- 甘肅甘南事業(yè)單位招聘考試高頻題庫帶答案2025年
- 注冊會計師企業(yè)審計風(fēng)險試題及答案
- 礦山施工過程中的風(fēng)險控制及預(yù)防措施
- 校長在初三二模教學(xué)質(zhì)量分析會上講話明確差距,對癥下藥,多方聯(lián)動,分類推進(jìn),奮戰(zhàn)60天
- 民事起訴狀(勞動爭議糾紛)
- 酒店前臺掛賬管理制度
- 船舶ABS規(guī)范培訓(xùn)
- 2025標(biāo)準(zhǔn)裝修合同范本
評論
0/150
提交評論