html5 postMessage
hmtl5 推出postMessage后,在解决跨文档消息通信、及跨域请求数据的问题 时方便了很多。
一、postMessage的使用方法:
window.addEventListener("message", receiveMessage, false); function receiveMessage(event){ if (event.origin !== "http://example.org:8080") return; // ... }
二、postMessage实例
127.0.0.1 sx.daily.taobao.net
127.0.0.1 sx.taobao.com
在父网页中通过 iframe 嵌入子页面。
<!DOCTYPE html> <html> <head> <title>门户页</title> <meta charset="utf-8"/> </head> <body> <div> 输出的内容是:<span id="msg"></span> </div> <!-- 通过 iframe 嵌入子页面 --> <iframe id="widget" src="http://sx.daily.taobao.net/study/postMessage/chat.html" frameborder="0"></iframe> <script> var fromOrigin = "http://sx.daily.taobao.net"; //iframe来自的源 function msgHandler(e){ if(e.origin == fromOrigin){ notify(e.data); }else{ //忽视 } } function notify(data){ var msg = document.querySelector(‘#msg‘); msg.innerText = data.msg; console.log(data); } window.addEventListener(‘message‘,msgHandler,true); </script> </body> </html>
<!DOCTYPE html> <html> <head> <title>聊天件</title> <meta charset="utf-8"/> <style> body{ background: #fb0; height: 200px; } </style> </head> <body> <h2>chat页面</h2> <input id="txtCont" type="text" value=""/> <button id="btnSend">发送</button> <script> var targOrigin = "http://sx.taobao.com"; //要发向的目标源 var btn = document.querySelector(‘#btnSend‘); var txt = document.querySelector(‘#txtCont‘); function sendMsg(){ //支持情况 ie9及以上,注意,ie9只支持字符.部分ie8支持 //chrome if(window.top.postMessage){ //有些浏览器支持javascript对象,canvas imageData等数据类型 //支持情况 ie9下不支持 ie9支持 postMessage的值为字符串,不支持对象。ie10及以上支持对象 //如: {‘msg‘:txt.value} var obj = {‘msg‘:txt.value}; // 通过 postMessage 向父窗口发送数据 window.top.postMessage(obj,targOrigin); } }; btn.addEventListener(‘click‘,sendMsg,true); </script> </body> </html>
三、各个浏览器的支持情况
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。