HTML5 跨文档消息传输
對窗口對象的message事件進行監聽
window.addEventListener("message", function(event) { // 處理程序代碼 }, false);使用window對象的postMessage()方法向其他窗口發送消息,該方法的定義如下:
otherwindow.postMessage(message, targetOrigin); ?
該 方法使用兩個參數:第一個參數為所發送的消息文本,但也可以是任何JavaScript對象(通過JSON轉換對象為文本);第二個參數為接收消 息的對象窗口的URL地址,可以在URL地址字符串中使用通配符“*”指定全部地址,不過建議使用準確的URL地址。otherwindow為要發送窗口 對象的引用,可以通過window.open()方法返回該對象,或通過對window.frames數組指定序號(index)或名字的方式來返回單個 frame所屬性的窗口對象。
<script type="text/javascript" src="http://wwww.yowu.com/Tpl/default/Public/js/jquery.js"></script><script>$(function(){window.parent.postMessage("<?php echo $payFlag . '|'. intval($out_trade_no);?>", '*');});</script>示例
?
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>跨文檔消息傳輸示例主文檔</title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script> <script type="text/javascript"> $(function() { // 監聽message事件。 window.addEventListener("message", function(event) { // 忽略指定URL之外的頁面發送的消息。 if(event.origin != "http://www.blue-butterfly.net") return; alert(event.data); // 顯示消息。 }, false); $("#iframeContent").load(function(event) { // 向子頁面發送消息 this[0].postMessage("Hello", "http://www.blue-butterfly.net/test/"); }); }); </script> </head> <body> <header> <h1>跨域通信示例</h1> </header> <iframe id="iframeContent" width="400" src="http://www.blue-butterfly.net/test/"></iframe> </body> </html>?
子頁面中的代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script> <script type="text/javascript"> $(function() { window.addEventListener("message", function(event) { if(event.origin != "http://Lulingniu") return; $("#console").append(event.origin).append("傳來的消息:").append(event.data); // 向主頁面發送消息。 event.source.postMessage("Hello, there is :" + this.location, event.origin); }, false); }); </script> </head> <body> <p>這是iframe中的內容。</p> <div id="console"></div> </body> </html>?
-
通過對window對象的message事件進行監聽,可以接收消息。
-
通 過訪問message事件的origin屬性,可以獲取消息的發送源(本例中主頁面的發送源為“http://Lulingniu”, 子頁面的發送源為“http://www.blue-butterfly.net”)。注意:發送源與網站的URL地址不是一個概念,發送源只包括域名與 端口號,為了不接收其他源惡意發送過來的消息,最好對發送源做檢查。
-
通過訪問message事件的data屬性,可以取得消息內容(可以是任何JavaScript對象,使用JSON)。
-
使用postMessage()方法發送消息。
-
通過訪問message事件的source屬性,可以獲取消息發送源的窗口的代理對象。
?
?
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的HTML5 跨文档消息传输的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle ebs 多组织屏蔽的研究
- 下一篇: Tomcat中两个不同项目共享Sessi