自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTML5 的頁(yè)面消息傳輸機(jī)制

開(kāi)發(fā) 前端
HTML5 的Message API能夠讓HTML5頁(yè)面之間傳遞消息,甚至這些頁(yè)面可以不在同一樣域名下。

HTML5 的Message API能夠讓HTML5頁(yè)面之間傳遞消息,甚至這些頁(yè)面可以不在同一樣域名下。

發(fā)送消息

為了讓消息能從一個(gè)頁(yè)面發(fā)送到另一個(gè)頁(yè)面,主動(dòng)發(fā)送消息的頁(yè)面必須擁有另一個(gè)頁(yè)面的窗口引用。然后發(fā)送 頁(yè)面針對(duì)接受頁(yè)調(diào)用 postMessage() 方法。

代碼演示:

  1. var message = "Hello there";  
  2. var origin  = "http://www.oschina.net";  
  3.  
  4. var theIframe = document.getElementById("theIframe");  
  5.  
  6. theIframe.contentWindow.postMessage(message, origin); 

postMessage() 方法中 origin 參數(shù)的值必須與頁(yè)面所在的iframe的域名相匹配。否則將無(wú)法正常運(yùn)行,這里 你不需要整個(gè)頁(yè)面的網(wǎng)址,而只需要主域名就夠了,例如 http://localhost 或 http://www.oschina.net

接受消息

為了能接受消息,頁(yè)面需要訂閱好onmessage事件的處理方法,以下就是能在Firefox與Chrome上正常運(yùn)行的代碼:

  1. window.onmessage = function(event) {  
  2.     document.getElementById("show").innerHTML =  
  3.             "Message Received: " + event.data  
  4.           + " from: " + event.origin;  

以上代碼設(shè)置好window的onmessage事件處理方法。然后在方法中找到id為"show"的html元素,然后設(shè)置此元 素的innerHTML為"Message received: "與真正的message。

在IE9下必須以這種代碼實(shí)現(xiàn)相同的功能。

  1. window.attachEvent("onmessage", function(event) {  
  2.     document.getElementById("show").innerHTML =  
  3.             "Message Received: " + event.data  
  4.           + " from: " + event.origin;  

建議你在JS中保持這兩份代碼,它們之間是沒(méi)有沖突的。

事件對(duì)象將包含以下三個(gè)屬性。

  1. data  
  2. origin  
  3. source 

data屬性包含包含發(fā)送頁(yè)面發(fā)送過(guò)來(lái)的消息

origin屬性包含發(fā)送頁(yè)面的原始域名

source屬性包含發(fā)送頁(yè)面的window對(duì)象對(duì)應(yīng)的引用。此window對(duì)象可以用來(lái)回復(fù)消息給原始的發(fā)送頁(yè)面,只需 要使用postMessage( )就行,如下就是代碼:

  1. window.onmessage = function(event) {  
  2.     event.source.postMessage(  
  3.        "Thank you for the message",  
  4.        event.origin  
  5.     );  

發(fā)送JSON

Messageing API只允許你發(fā)送字符串類型消息。如果你需要發(fā)送JavaScript對(duì)象,你將需要將此對(duì)象使用 JSON.stringify( ) 轉(zhuǎn)換成JSON字符串,接受后使用 JSON.parse( ) 方法翻譯成JavaScript對(duì)象。代碼如下:

  1. var theObject = { property1 : "hello", property2 : "world" }  
  2. var message = JSON.stringify(theObject);  
  3. var origin  = "http://tutorials.jenkov.com";  
  4.  
  5. var theIframe = document.getElementById("theIframe");  
  6.  
  7. theIframe.contentWindow.postMessage(message, origin); 

以下代碼就是如何將JSON字符串轉(zhuǎn)換成 JavaScript 對(duì)象。

  1. window.onmessage = function(event) {  
  2.     var theObject = JSON.parse(event.data);  

原文鏈接 , OSChina.NET 原創(chuàng)翻譯

責(zé)任編輯:林師授 來(lái)源: OSCHINA
相關(guān)推薦

2015-07-22 16:44:51

HTML5優(yōu)化

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來(lái)

2011-05-13 17:36:05

HTML

2023-03-16 09:00:00

HTML5HTML語(yǔ)言

2015-03-11 13:21:50

2013-10-21 15:24:49

html5游戲

2011-05-13 17:41:40

2011-01-14 17:53:33

HTML5cssweb

2012-08-31 17:09:31

FacebookHTML5W3C

2015-04-30 11:26:38

HTML5與APP的抉

2016-05-13 17:14:51

華為HTML5

2014-12-30 17:13:51

HTML5

2011-05-12 15:42:16

HTML5

2017-01-03 18:09:33

HTML5本地存儲(chǔ)Web

2012-06-25 14:57:27

HTML5

2011-05-11 12:59:18

HTML5

2012-08-27 10:00:06

HTML5

2019-05-29 19:00:35

HTML5存儲(chǔ)方式前端

2011-07-26 10:46:04

HTML 5

2013-03-22 08:59:57

HTML5移動(dòng)應(yīng)用Web App
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)