使用postMessage實現iframe跨域通信的示例代碼
1、父頁面內容
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <h1>主頁面</h1> <iframe id="child" src="http://10.0.0.159:8080"></iframe> <div> <h2>主頁面跨域接收消息區域</h2> <div id="message"></div> </div> </body> <script> /* -------------iframe跨域數據傳遞--------------- */ //傳遞數據到子頁面 window.onload = function() { document.getElementById('child').contentWindow.postMessage("主頁面消息", "http://10.0.0.159:8080") } //接受子頁面傳遞過來的數據 window.addEventListener('message', function(event) { document.getElementById('message').innerHTML = "收到" + event.origin + "消息:" + event.data; }, false); </script> </html>
2、子頁面
(我這裡在在vue頁面裡做的測試,vue模板的html代碼就不展示瞭)
mounted() { //接收父頁面傳過來的數據 window.addEventListener('message', function(event) { // 處理addEventListener執行兩次的情況,避免獲取不到data // 因此判斷接收的域是否是父頁面 if(event.origin.includes("http://127.0.0.1:8848")){ console.log(event); document.getElementById('message').innerHTML = "收到" + event.origin + "消息:" + event.data; //把數據傳遞給父頁面 > top.postMessage(要傳遞的數據,父頁面的url訪問地址) top.postMessage("子頁面消息收到", 'http://127.0.0.1:8848/boatStaticHtml/iframe%E9%80%9A%E4%BF%A1.html'); } }, false); }
3、效果圖展示
到此這篇關於使用postMessage實現iframe跨域通信的文章就介紹到這瞭,更多相關postMessage iframe跨域通信內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 與iframe進行跨域交互的解決方案(推薦)
- Vue 使用postMessage 實現父子跨域通信
- Iframe跨窗口通信原理詳解
- vue內嵌iframe跨域通信的實例代碼
- js前端解決跨域的八種實現方案