vue3內嵌iframe的傳參與接收參數(shù)代碼示例
項目場景:
當項目a需要用到項目b中的某個模塊,如項目b中的支付模塊 與 項目a的支付模塊是通用的,可以使用iframe將項目b內嵌在項目a中,達到代碼功能復用的效果。
前言
既然兩個項目中有共通的內容 就少不了互相通信。核心的兩個方法是 傳值:postMessage() 和 接收值:addEventListener()。
一、內嵌iframe
項目a代碼如下:
<template> <div class="iframe" v-if="payShow"> <!--iframeUrl 需要內嵌展示的url 傳值可以直接拼接在路徑后 如:https://xxx.com?data='需要傳的參數(shù)'--> <iframe id="iframe" :src="iframeUrl" frameborder="0" style="width:100%; height: 100%;"></iframe> </div> </template>
二、iframe傳參
此時項目a中內嵌了iframe展示項目b,項目b中需要點擊關閉按鈕,將自己在項目a中關閉,這個時候需要項目b點擊事件觸發(fā)時,將這個操作響應給項目a,所以需要項目b給項目a傳參。使用方法:window.parent.postMessage() , 具體參數(shù)和使用詳細可以查看官網:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage
項目b代碼如下:
const handleBack = () => { let data = { judge: false, } // 傳參 window.parent.postMessage(data, '*') }
三、接收iframe參數(shù)
接收參數(shù)使用方法: addEventListener(事件名稱,執(zhí)行函數(shù),觸發(fā)類型) 用于向指定元素添加監(jiān)聽事件,配合removeEventListener() 方法來移除事件。項目a代碼如下:
onMounted(() => { // message 該事件通過或者從對象(WebSocket, Web Worker, Event Source 或者子 frame 或父窗口)接收到消息時觸發(fā) window.addEventListener('message',payEvent) }) const payEvent=(event)=> { if (event.data) { payShow.value = event.data.judge } } onUnmounted(() => { window.removeEventListener('message',payEvent) })
總結
iframe的傳參與接收參數(shù)到此完成,最后記得頁面關閉時移除監(jiān)聽事件。
到此這篇關于vue3內嵌iframe的傳參與接收參數(shù)的文章就介紹到這了,更多相關vue3內嵌iframe傳參內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue reactive函數(shù)實現(xiàn)流程詳解
一個基本類型的數(shù)據(jù),想要變成響應式數(shù)據(jù),那么需要通過ref函數(shù)包裹,而如果是一個對象的話,那么需要使用reactive函數(shù),這篇文章主要介紹了Vue reactive函數(shù)2023-01-01vue改變循環(huán)遍歷后的數(shù)據(jù)實例
今天小編就為大家分享一篇vue改變循環(huán)遍歷后的數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11