最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue之組件和iframe頁面的相互傳參問題

 更新時間:2025年06月12日 09:08:56   作者:阿飛920  
這篇文章主要介紹了vue之組件和iframe頁面的相互傳參問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

目前網(wǎng)上大多關(guān)于iframe父子傳參的博客都是在敘述父頁面是html文件,子iframe文件也是html文件,涉及到父頁面是vue組件子iframe頁面是html的博客多數(shù)講的不是很明白;而最近我在項目中碰到了這種需求:在vue組件中嵌入iframe頁面,并實現(xiàn)父子傳參;

1.vue組件調(diào)用iframe頁面方法和參數(shù)

(1-1)下面是在 vue組件中(父組件) 一個通過點擊按鈕觸發(fā)的方法:

 sentToIframe() {
      let childFrameObj = document.getElementById("unityiframe");
      console.log("childFrameObj", childFrameObj);
      // childFrameObj.contentWindow.getMessageFromParent(this.tData); //第一種向子iFrame傳參方式,調(diào)用iframe的methods達(dá)到傳參的目的
      this.$refs.unity.contentWindow.getMessageFromParent(this.tData); // 這樣也是可以調(diào)用子iframe的方法
      // childFrameObj.contentWindow.frameData = "這是vue組件給你的參數(shù)!" // 傳參成功
      this.$refs.unity.contentWindow.frameData =
        "這是vue組件給你的第二個參數(shù)!"; //傳參成功
      console.log("發(fā)送完成");

      //此外,還可以通過DOM操作,操作子iframe的DOM
      var t = document
        .getElementById("unityiframe")
        .contentWindow.document.getElementById("dd");
      console.log(t);
      //
      console.log("frameData?", unityiframe.window.frameData); //利用id可以調(diào)用到iframe里的變量
      // console.log("frameData?",this.$refs.unity.window.frameData) //利用ref調(diào)用不到iframe里的變量
    },

(1-2)子組件 iframe頁面 中有一個被調(diào)用的方法及變量:

  var frameData = "別喊我!" //此變量用于測試 vue組件是否能調(diào)用此變量
  function getMessageFromParent(value){
    // 接受從vue組件中傳過來的參數(shù)
    console.log(`我接收到parent傳過來的參數(shù)了:${value}`)
  }
  

點擊按鈕的結(jié)果是:

2.iframe頁面向vue組件傳參

(2-1)在vue組件中有一個供iframe頁面調(diào)用的方法:

    getFromIframe(value) {
      console.log(`我是iframe傳過來的參數(shù):${value}`);
      console.log("我被iframe調(diào)用了!");
      console.log(this.vueData);
      console.log(`改變前是:你是否能夠改變我;改變后是:${this.isChangeMe}`);
    }

(2-2)iframe調(diào)用vue組件方法的代碼

  function Obj(res){
  // Obj通過按鈕點擊觸發(fā)
    console.log(parent)
        // 調(diào)用vue組件方法
      parent.getFromIframe("我叫iframe")
      // 向vue組件發(fā)送參數(shù) && 改變vue組件的參數(shù)
      parent.isChangeMe = "你已經(jīng)被我iframe改變了"
  }

但是 ?。。。。。。。。。。。。。。?/p>

只這么做是不夠的,會報錯,如下:

個人猜想: 問題的原因是 iframe的parent并不是vue實例!

目前只找到了一個辦法來解決這個問題:

就是在created鉤子里加上這兩句,

created() {
    window.getFromIframe = this.getFromIframe; //把vue實例中的方法引用給window對象
  },

在調(diào)用的vue實例的方法中 加上對vue內(nèi)變量的改變

getFromIframe(value) {
      console.log(`我是iframe傳過來的參數(shù):${value}`);
      console.log("我被iframe調(diào)用了!");
      console.log(this.vueData);
      this.isChangeMe = window.isChangeMe;// 把window變量 賦值給 vue 實例變量;使得在iframe中能夠改變vue實例中變量
      console.log(`改變前是:你是否能夠改變我;改變后是:${this.isChangeMe}`);
    }

最終的運(yùn)行結(jié)果是:

bingo?。。。?! 問題暫時得到了解決。

總結(jié)

vue組件 和 iframe 的嵌入麻煩多多,且目前還沒還沒找到正統(tǒng)的方法;此外,還有很多坑我還沒踩到,如果后續(xù)這方面有什么問題 以及 其他的解決方案,我會繼續(xù)更新到這上面來的!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue2.x和Vue3.x的雙向綁定原理詳解

    Vue2.x和Vue3.x的雙向綁定原理詳解

    這篇文章主要給大家介紹了關(guān)于Vue2.x和Vue3.x的雙向綁定原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • vue獲取el-form的整體驗證狀態(tài)

    vue獲取el-form的整體驗證狀態(tài)

    本文主要介紹了vue獲取el-form的整體驗證狀態(tài),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue數(shù)組中不滿足條件跳出循環(huán)問題

    vue數(shù)組中不滿足條件跳出循環(huán)問題

    這篇文章主要介紹了vue數(shù)組中不滿足條件跳出循環(huán)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue3中template使用ref無需.value原因解析

    vue3中template使用ref無需.value原因解析

    vue3的template中使用ref變量無需使用.value,還可以在事件處理器中進(jìn)行賦值操作時,無需使用.value就可以直接修改ref變量的值,這篇文章主要介紹了原來vue3中template使用ref無需.value是因為這個,需要的朋友可以參考下
    2024-06-06
  • 使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果

    使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果

    我們知道省市區(qū)縣都有名稱和對應(yīng)的數(shù)字唯一編號,使用編號可以更方便查詢以及程序處理,我們今天來了解一下使用vue2來實現(xiàn)常見的省市區(qū)下拉聯(lián)動選擇效果,需要的朋友可以參考下
    2018-11-11
  • 深入了解Vue3模板編譯原理

    深入了解Vue3模板編譯原理

    這篇文章主要介紹了深入了解Vue3模板編譯原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • vue中如何下載excel流文件及設(shè)置下載文件名

    vue中如何下載excel流文件及設(shè)置下載文件名

    這篇文章主要介紹了vue中如何下載excel流文件及設(shè)置下載文件名,對vue感興趣的同學(xué),可以參考下
    2021-05-05
  • vue使用 better-scroll的參數(shù)和方法詳解

    vue使用 better-scroll的參數(shù)和方法詳解

    這篇文章主要介紹了vue使用 better-scroll的參數(shù)和方法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue柱狀進(jìn)度條圖像的完美實現(xiàn)方案

    vue柱狀進(jìn)度條圖像的完美實現(xiàn)方案

    本文是對bar進(jìn)度條實現(xiàn)的2種方案進(jìn)行分享,第一種是很簡單,純css的實現(xiàn),第二種是echart的實現(xiàn)。對vue柱狀進(jìn)度條圖像的實現(xiàn)方案,感興趣的朋友跟隨小編一起看看吧
    2019-08-08
  • Vue3中el-table表格數(shù)據(jù)不顯示的原因和解決方法

    Vue3中el-table表格數(shù)據(jù)不顯示的原因和解決方法

    這篇文章主要給大家介紹了Vue3中el-table表格數(shù)據(jù)不顯示的原因和解決方法,文中有詳細(xì)的代碼示例供大家參考,如果有遇到相同問題的朋友可以參考閱讀本文,希望能夠幫到您
    2023-11-11

最新評論

即墨市| 怀集县| 闸北区| 马鞍山市| 东至县| 东光县| 石台县| 甘南县| 郧西县| 石楼县| 元阳县| 阳山县| 竹溪县| 阿勒泰市| 延吉市| 石城县| 洞口县| 屏山县| 南召县| 岳阳县| 锦屏县| 尤溪县| 宕昌县| 竹溪县| 汉中市| 潞城市| 博白县| 江源县| 龙泉市| 札达县| 清徐县| 北碚区| 濮阳县| 隆德县| 万全县| 宜兰县| 淳安县| 得荣县| 都江堰市| 察雅县| 江永县|