vue 本地自測iframe通訊

使用 postMessage ?API 來實現跨窗口(跨域)的消息傳遞。postMessage 允許你安全地發送消息到其他窗口,包括嵌套的 iframe,而不需要擔心同源策略的問題。

發送消息(父應用)

1. 父應用:發送消息給子應用

父應用可以通過 postMessage 將消息發送給子應用。需要注意的是,發送消息時,需要指定目標窗口和目標窗口的來源(即目標 iframe 的 origin),以確保安全性。

?iframe.contentWindow.postMessage(message, targetOrigin)

?使用 postMessage 向子應用發送消息。message 是要發送的數據,可以是任何 JavaScript 對象。targetOrigin 是目標窗口的源(例如:http://child-app.com),它確保消息只發送到具有這個源的窗口。

2、接收消息(子應用)

子應用通過監聽 message 事件來接收父應用發送的消息。收到消息后,子應用可以根據消息中的 type 字段來執行不同的操作。

示例:父應用與子應用通信

1. 父應用:發送消息給子應用

父應用通過 postMessage 向 iframe 中的子應用發送一個包含 type 的消息。我們還可以通過 targetOrigin 來確保消息只發送到指定的子應用。

<!-- 父應用 -->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Parent App</title>
</head>
<body><h1>Parent Application</h1><!-- iframe 中嵌套子應用 --><iframe id="childIframe" src="http://child-app.com" width="600" height="400"></iframe><button onclick="sendMessageToChild()">發送消息到子應用</button><script>// 發送消息到子應用function sendMessageToChild() {const iframe = document.getElementById('childIframe');const message = {type: 'CLEAR_INPUT',  // 消息類型data: { message: '請清空輸入框' }};// 使用 postMessage 發送消息到子應用iframe.contentWindow.postMessage(message, 'http://child-app.com');  // 子應用的 origin}</script>
</body>
</html>
2. 子應用:接收父應用發送的消息

子應用會監聽 message 事件,接收到消息后可以處理它。通常可以根據 message.type 來決定如何處理消息。

<!-- 子應用 (iframe 內容) -->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Child App</title>
</head>
<body><h1>Child Application</h1><input type="text" id="inputField" placeholder="請輸入內容..."><script>// 監聽父應用發送的消息window.addEventListener('message', function(event) {// 驗證消息的來源if (event.origin !== 'http://parent-app.com') {return;  // 如果消息來源不正確,則忽略}const message = event.data;console.log('Received message from parent:', message);// 根據消息的 type 執行不同操作if (message.type === 'CLEAR_INPUT') {document.getElementById('inputField').value = '';  // 清空輸入框}});</script>
</body>
</html>

如何在vue本地項目進行iframe測試通訊

1、新建一個iframe.vue頁面,為父頁面

// 父應用
<template><div class="act-form"><iframe :src="src" id="childIframe" width="600" height="400"></iframe><el-button @click="sendMessage">向iframe發送信息</el-button></div>
</template><script>export default {data () {return {src: '',}},created() {// 當前我本地運行的端口為 localhost:8080  需要根據實際情況調動this.src = 'http:localhost:8080/home?id=18' },methods: {sendMessage () {const iframe = document.getElementById('childIframe');const message = {type: 'CLEAR_INPUT',  // 消息類型data: { message: '請清空輸入框' }};// 使用 postMessage 發送消息到子應用iframe.contentWindow.postMessage(message, this.src);  // 子應用的origin},},}
}
</script>

2、子應用?

<!-- 子應用 (iframe 內容) -->
<template><div> // 內容區域</div>
</template><script>export default {data () {return {},created() {// 在外部vue的window上添加postMessage的監聽,并且綁定處理函數handleMessagewindow.addEventListener('message', this.handleMessage)},methods: {handleMessage (event) {// 根據上面制定的結構來解析iframe內部發回來的數據// 驗證消息的來源if (event.origin !== 'http://parent-app.com') {return;  // 如果消息來源不正確,則忽略}const message = event.data;console.log('Received message from parent:', message);// 根據消息的 type 執行不同操作if (message.type === 'CLEAR_INPUT') {// 在這里執行你需要的邏輯}});}}beforeDestroy(){  // 頁面關閉移除監聽window.removeEventListener("message", this.handleMessage);}
</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64185.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64185.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64185.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux:code:network:devinet_sysctl_forward;IN_DEV_FORWARD

文章目錄 簡介sysctl 設置使用,arp_process間接使用IN_DEV_RX_REDIRECTSdev_disable_lro簡介 最近在看Linux里的forwarding的功能。順便在這里總結一下。有些詳細代碼邏輯,如果可以記錄一下,會好一點。 sysctl 設置 這個函數在查看的時候需要注意的問題:變量名起的有點簡…

自然語言處理與知識圖譜的融合與應用

目錄 前言1. 知識圖譜與自然語言處理的關系1.1 知識圖譜的定義與特點1.2 自然語言處理的核心任務1.3 二者的互補性 2. NLP在知識圖譜構建中的應用2.1 信息抽取2.1.1 實體識別2.1.2 關系抽取2.1.3 屬性抽取 2.2 知識融合2.3 知識推理 3. NLP與知識圖譜融合的實際應用3.1 智能問答…

PHP 數組

PHP 數組 PHP 是一種流行的服務器端編程語言&#xff0c;它提供了強大的數組處理能力。PHP 數組是一種數據結構&#xff0c;用于存儲相同類型或不同類型的多個值。在 PHP 中&#xff0c;數組可以分為一維數組、二維數組和多維數組。本文將詳細介紹 PHP 數組的各種操作&#xf…

CSS(三)盒子模型

目錄 Content Padding Border Margin 盒子模型計算方式 使用 box-sizing 屬性控制盒子模型的計算 所有的HTML元素都可以看作像下圖這樣一個矩形盒子&#xff1a; 這個模型包括了四個區域&#xff1a;content&#xff08;內容區域&#xff09;、padding&#xff08;內邊距…

基于NodeMCU的物聯網窗簾控制系統設計

最終效果 基于NodeMCU的物聯網窗簾控制系統設計 項目介紹 該項目是“物聯網實驗室監測控制系統設計&#xff08;仿智能家居&#xff09;”項目中的“家電控制設計”中的“窗簾控制”子項目&#xff0c;最前者還包括“物聯網設計”、“環境監測設計”、“門禁系統設計計”和“小…

有沒有免費提取音頻的軟件?音頻編輯軟件介紹!

出于工作和生活娛樂等原因&#xff0c;有時候我們需要把音頻單獨提取出來&#xff08;比如歌曲伴奏、人聲清唱等、樂器獨奏等&#xff09;。要提取音頻必須借助音頻處理軟件&#xff0c;那么有沒有免費提取音頻的軟件呢&#xff1f;下面我們將為大家介紹幾款免費軟件&#xff0…

WPF自定義窗口 輸入驗證不生效

WPF自定義窗口 輸入驗證不生效 WPF ValidationRule 不生效 WPF ValidationRule 不生效 解決方案&#xff1a;在WindowStyle的Template中添加AdornerDecorator標簽。 <Style x:Key"WindowStyle1" TargetType"{x:Type Window}"><Setter Property&…

【保姆式】python調用api通過機器人發送文件到飛書指定群聊

當前飛書webhook機器人還不支持發送文件類型的群消息&#xff0c;它目前僅支持文本&#xff0c;富文本&#xff0c;卡片等文字類型的數據。 我們可以申請創建一個機器人應用來實現群發送文件消息。 創建飛書應用 創建飛書應用、配置權限、添加機器人 來到飛書開發者后臺 創建…

MySQL-存儲過程(頭歌數據庫實驗題)

&#xff08;學校數據庫課程的頭歌平臺實驗題&#xff0c;根據自己理解編寫&#xff0c;希望對正在學的人有啟發作用和借鑒幫助&#xff0c;不喜勿噴&#xff0c;有錯請聯系改正&#xff09; 實驗 存儲過程&#xff1a;輸入1 任務描述&#xff1a; 本關任務&#xff1a;編寫…

GitLab 服務變更提醒:中國大陸、澳門和香港用戶停止提供服務(GitLab 服務停止)

目錄 前言 一. 變更詳情 1. 停止服務區域 2. 郵件通知 3. 新的服務提供商 4. 關鍵日期 5. 行動建議 二. 遷移指南 三. 注意事項 四. 相關推薦 前言 近期&#xff0c;許多位于中國大陸、澳門和香港的 GitLab 用戶收到了一封來自 GitLab 官方的重要通知。根據這封郵件…

mysql基礎快速入門

通用語法及分類 DDL: 數據定義語言&#xff0c;用來定義數據庫對象&#xff08;數據庫、表、字段&#xff09;DML: 數據操作語言&#xff0c;用來對數據庫表中的數據進行增刪改DQL: 數據查詢語言&#xff0c;用來查詢數據庫中表的記錄DCL: 數據控制語言&#xff0c;用來創建數…

Python文件讀寫在“簡易記事本”項目中的應用

Python文件讀寫在“簡易記事本”項目中的應用 文件讀寫是“簡易記事本”項目實現數據持久化的關鍵部分。在本節中&#xff0c;我們將逐步拆解記事本的功能&#xff0c;詳細講解與文件讀寫相關的代碼&#xff0c;并結合實際操作幫助讀者更好地理解文件操作的核心知識點。 功能…

【Agent】AutoGen Studio2.0開源框架-UI層環境安裝+詳細操作教程(從0到1帶跑通智能體AutoGen Studio)

&#x1f4a5; 歡迎來到我的博客&#xff01;很高興能在這里與您相遇&#xff01; 首頁&#xff1a;GPT-千鑫 – 熱愛AI、熱愛Python的天選打工人&#xff0c;活到老學到老&#xff01;&#xff01;&#xff01;導航 - 人工智能系列&#xff1a;包含 OpenAI API Key教程, 50個…

三層交換機配置

一&#xff0c;三層交換 概念&#xff1a;三層交換技術就是&#xff1a;二層交換技術三層轉發技術(路由器功能)。它解決了局域網中網段劃分之后&#xff0c;網段中子網必須依賴路由器進行管理的局面&#xff0c;解決了傳統路由器低速&#xff0c;復雜所造成的網絡瓶頸問題。 …

js單例模式

單例模式是一種常見的設計模式&#xff0c;在JavaScript中也有廣泛應用&#xff0c;以下是關于它的詳細介紹&#xff1a; 定義 單例模式是一種創建型設計模式&#xff0c;它確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來訪問該實例。在JavaScript中&#xff0c;…

【Golang 面試題】每日 3 題(六)

?個人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;專欄地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;專欄簡介&#xff1a;在這個專欄中&#xff0c;我將會分享 Golang 面試中常見的面試題給大家~ ??如果有收獲的話&#xff0c;歡迎點贊&#x1f44d;收藏…

SQL Server數據庫多主模式解決方案

SQL Server 本身并不直接支持多主模式(Multi-Master Replication),即多個數據庫實例可以同時進行寫操作,并且這些更改會自動同步到其他實例。不過,SQL Server 提供了多種高可用性和復制解決方案,可以實現類似多主模式的功能。以下是幾種常見的方法: 1. Always On 可用性…

連鎖餐飲行業數據可視化分析方案

引言 隨著連鎖餐飲行業的迅速發展&#xff0c;市場競爭日益激烈。企業需要更加精準地把握運營狀況、消費者需求和市場趨勢&#xff0c;以制定科學合理的決策&#xff0c;提升競爭力和盈利能力。可視化數據分析可以幫助連鎖餐飲企業整合多源數據&#xff0c;通過直觀、動態的可…

Zookeeper JavaAPI操作(Curator API常用操作)

構建項目 zk版本&#xff1a;3.5.7&#xff0c;引入4.0.0的curator版本&#xff0c;Curator依賴的版本只能比zookeeper依賴的版本高。 Curator簡單介紹 Curator是Netflix公司開源的一套zookeeper客戶端框架&#xff0c;解決了很多Zookeeper客戶端非常底層的細節開發工作&…

可搜索的下拉選擇框:filterable屬性詳解

在前端開發中&#xff0c;下拉選擇框&#xff08;Dropdown Select&#xff09;是一個常見的UI組件&#xff0c;它允許用戶從一組預定義的選項中選擇一個或多個值。然而&#xff0c;當選項數量較多時&#xff0c;手動查找特定的選項可能會變得繁瑣。為了解決這個問題&#xff0c…