




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第使用window.postMessage()方法在兩個網(wǎng)頁間傳遞數(shù)據(jù)目錄說明發(fā)送端postMessage程序發(fā)送消息的基本語法:targetWindowmessagetargetOrigintransfer接收端完整程序發(fā)送程序接收程序
說明
window.postMessage()方法可以安全地實現(xiàn)Window對象之間的跨域通信。例如,在一個頁面和它生成的彈出窗口之間,或者是頁面和嵌入其中的iframe之間。
通常情況下,不同頁面上的腳本允許彼此訪問,當且僅當它們源自的頁面共享相同的協(xié)議,端口號和主機(也稱為同源策略)。window.postMessage()提供了一個受控的機制來安全地規(guī)避這個限制(如果使用得當?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ā)送到目標窗口的消息。數(shù)據(jù)使用結構化克隆算法進行序列化。這意味著我們可以將各種各樣的數(shù)據(jù)對象安全地傳遞到目標窗口,而無需自己對其進行序列化。
targetOrigin
targetOrigin就是指定目標窗口的來源,必須與消息發(fā)送目標相一致,可以是字符串*或URI。*表示任何目標窗口都可接收,為安全起見,請一定要明確提定接收方的URI。
transfer
transfer是可選參數(shù)
接收端
目標窗口通過執(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動教育體驗課件
- 景區(qū)標牌改造方案
- 食堂分餐規(guī)劃方案
- 玉米生產(chǎn)考試題及答案
- 塑膠工程面試題及答案
- 企業(yè)常用面試題及答案
- 清新區(qū)橋梁拆除方案
- 2026版《全品高考》選考復習方案生物949 課時作業(yè)(四十五) 生態(tài)系統(tǒng)的能量流動含答案
- 水利管道開挖方案
- 奇葩語文面試題及答案
- 《戶外探險》課件
- 《老年人出院準備服務指南》
- 2025年畜禽屠宰及加工企業(yè)組織結構及部門職責
- 《工藝流程培訓》課件
- 頸椎前路手術麻醉
- 第一單元 第1課《互聯(lián)網(wǎng)發(fā)展靠創(chuàng)新》說課稿2024-2025學年人教版(2024)初中信息科技七年級上冊
- 公司項目提成獎勵制度
- 集成電路產(chǎn)品供應鏈分析
- DB11T 1430-2017 古樹名木雷電防護技術規(guī)范
- 電氣專業(yè)知識
- 葡萄酒與西方文化學習通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論