欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue與iframe頁面數(shù)據(jù)互相通信的實(shí)現(xiàn)示例

 更新時間:2023年12月08日 09:59:18   作者:范特西是只貓  
這篇文章主要給大家介紹了vue與iframe頁面數(shù)據(jù)互相通信的實(shí)現(xiàn)示例,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

首頁先搭建一個html頁面和vue頁面,在vue頁面中,嵌入我們需要的iframe頁面

1. 搭建 html 頁面和 vue 頁面

暫定為 iframeDemo.htmlvueDemo.vue 頁面

在這里插入圖片描述

編寫 iframeDemo.html 頁面(完整代碼)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        html,
        body {
            margin: 0;
            padding: 0;
            overflow: hidden;
        }

        .box {
            width: 100%;
            height: 200px;
            border: 2px solid #000;
            box-sizing: border-box;
        }
    </style>
</head>

<body>
    <div class="box">
        <button id="sendBtn">我是iframe頁面按鈕</button>
    </div>
</body>

</html>

<script type="text/javascript">
    // iframe頁面點(diǎn)擊發(fā)送按鈕,傳遞事件給vue
    document.getElementById("sendBtn").addEventListener("click", () => {
        window.parent.postMessage({
            data: {
                code: "success",
                test: "我是點(diǎn)擊iframe頁面按鈕后過來的數(shù)據(jù)"
            }
        }, '*');
    });

    // 監(jiān)聽vue頁面?zhèn)鱽淼膍essage事件
    window.addEventListener("message", (event) => {
        const data = event.data
        if (data.code === 'success') {
          alert(data.test)
        }
    }, false);
</script>

編寫 vueDemo.vue 頁面(完整代碼),嵌入 iframeDemo.html 在實(shí)現(xiàn)兩個頁面的互相數(shù)據(jù)通信

<template>
  <div class="home">
    <div class="body">
      <iframe src="/iframeDemo.html" ref="iframe" frameborder="0" width="100%" height="4  00px" />
      <el-button @click="btnClick">我是vue頁面按鈕</el-button>
    </div>
  </div>
</template>

<script>
  export default {
    data() {
      return {}
    },
    methods: {
      // 給iframe發(fā)送事件
      btnClick() {
        this.iframeWin.postMessage(
          {
            code: 'success',
            test: '我是點(diǎn)擊vue頁面按鈕后過來的數(shù)據(jù)!',
          },
          '*'
        )
      },
    },
    mounted() {
      // 監(jiān)聽iframe頁面點(diǎn)擊按鈕觸發(fā)事件
      window.addEventListener('message', (event) => {
        const data = event.data.data
        if (data.code === 'success') {
          alert(data.test)
        }
      })
      this.iframeWin = this.$refs.iframe.contentWindow
    },
  }
</script>

<style scoped lang="scss">
  .home {
    .body {
      width: 890px;
      height: 100%;
      border: #ff3366 solid 10px;
      box-sizing: border-box;
      box-sizing: border-box;
      padding: 20px;
    }
  }
</style>

2. 實(shí)現(xiàn) iframe 向 vue 頁面通信

  • 點(diǎn)擊iframe頁面,通過 window.parent.postMessage 傳遞數(shù)據(jù)到vue頁面
  • vue頁面,通過 window.addEventListener('message') 去接收iframe傳遞過來的數(shù)據(jù)
  • 實(shí)現(xiàn)效果如下(點(diǎn)擊iframe頁面的按鈕事件,在vue頁面中監(jiān)聽并彈窗提示)

在這里插入圖片描述

  • iframeDemo.html 中新建按鈕的點(diǎn)擊事件
<button id="sendBtn">我是iframe頁面按鈕</button>
<script type="text/javascript">
     // iframe頁面點(diǎn)擊發(fā)送按鈕,傳遞事件給vue
     document.getElementById("sendBtn").addEventListener("click", ()=> {
        window.parent.postMessage({
            data: {
            code:"success",
            test:"我是點(diǎn)擊iframe頁面按鈕后過來的數(shù)據(jù)"
            }
        }, '*');
    });
</script>
  • vueDemo.vue 頁面的 mounted 中監(jiān)聽iframe頁面?zhèn)鬟^來的 message 事件
mounted() {
  // 監(jiān)聽iframe頁面點(diǎn)擊按鈕觸發(fā)事件
  window.addEventListener('message', (event) => {
    const data = event.data.data
    if (data.code === 'success') {
      alert(data.test)
    }
  })
},

3. 在實(shí)現(xiàn) vue 向 iframe 頁面通信

  • 點(diǎn)擊vue頁面,通過 postMessage 傳遞數(shù)據(jù)到iframe頁面
  • iframe頁面,通過 window.addEventListener('message') 去接收vue傳遞過來的數(shù)據(jù)

實(shí)現(xiàn)效果如下(點(diǎn)擊vue頁面的按鈕事件,在iframe頁面中監(jiān)聽并彈窗提示)

在這里插入圖片描述

  • vueDemo.html 中新建按鈕的點(diǎn)擊事件
<el-button @click="btnClick">我是vue頁面按鈕</el-button>
methods: {
  // vue頁面點(diǎn)擊發(fā)送按鈕,傳遞事件給vue
  btnClick() {
    this.iframeWin.postMessage(
      {
        code: 'success',
        test: '我是點(diǎn)擊vue頁面按鈕后過來的數(shù)據(jù)',
      },
      '*'
    )
  },
},
  • iframeDemo.vue 頁面的 mounted 中監(jiān)聽iframe頁面?zhèn)鬟^來的 message 事件
// 監(jiān)聽vue頁面?zhèn)鱽淼膍essage事件
window.addEventListener("message", (event) => {
    const data = event.data
    if (data.code === 'success') {
      alert(data.test)
    }
}, false);

以上就是vue與iframe頁面數(shù)據(jù)互相通信的實(shí)現(xiàn)示例的詳細(xì)內(nèi)容,更多關(guān)于vue與iframe頁面數(shù)據(jù)通信的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue?element-plus圖片預(yù)覽實(shí)現(xiàn)方法

    vue?element-plus圖片預(yù)覽實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于vue?element-plus圖片預(yù)覽實(shí)現(xiàn)的相關(guān)資料,最近的項(xiàng)目中有圖片預(yù)覽的場景,也是踩了一些坑,在這里總結(jié)一下,需要的朋友可以參考下
    2023-07-07
  • vue學(xué)習(xí)記錄之動態(tài)組件淺析

    vue學(xué)習(xí)記錄之動態(tài)組件淺析

    動態(tài)組件指的是動態(tài)切換組件的顯示與隱藏,這篇文章主要給大家介紹了關(guān)于vue學(xué)習(xí)記錄之動態(tài)組件的相關(guān)資料,本文通過示例代碼介紹介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 查找Vue中下標(biāo)的操作(some和findindex)

    查找Vue中下標(biāo)的操作(some和findindex)

    這篇文章主要介紹了查找Vue中下標(biāo)的操作(some和findindex),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 詳解vue中v-bind:style效果的自定義指令

    詳解vue中v-bind:style效果的自定義指令

    這篇文章主要介紹了vue中v-bind:style效果的自定義指令,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Vue3中watch的使用詳解

    Vue3中watch的使用詳解

    這篇文章主要介紹了Vue3中watch的詳解,主要包括Vue2使用watch及Vue3使用watch的方法,通過多種情況實(shí)例代碼相結(jié)合給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • Vue實(shí)用功能之實(shí)現(xiàn)拖拽元素、列表拖拽排序

    Vue實(shí)用功能之實(shí)現(xiàn)拖拽元素、列表拖拽排序

    在日常開發(fā)中,特別是管理端,經(jīng)常會遇到要實(shí)現(xiàn)拖拽排序的效果,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)用功能之實(shí)現(xiàn)拖拽元素、列表拖拽排序的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • vue-cli3項(xiàng)目在IE瀏覽器打開兼容問題及解決

    vue-cli3項(xiàng)目在IE瀏覽器打開兼容問題及解決

    這篇文章主要介紹了vue-cli3項(xiàng)目在IE瀏覽器打開兼容問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue pdf二次封裝解決無法顯示中文問題方法詳解

    vue pdf二次封裝解決無法顯示中文問題方法詳解

    這篇文章主要為大家介紹了vue pdf二次封裝解決無法顯示中文問題方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Vue3中的defineExpose函數(shù)用法深入解析

    Vue3中的defineExpose函數(shù)用法深入解析

    這篇文章主要介紹了Vue3中的defineExpose函數(shù)用法的相關(guān)資料,defineExpose是Vue3中用于在模式下暴露組件內(nèi)部屬性和方法的輔助函數(shù),它允許父組件通過ref訪問子組件的暴露內(nèi)容,提高組件間的交互能力并保持封裝性,需要的朋友可以參考下
    2025-01-01
  • Vuex中actions優(yōu)雅處理接口請求的方法

    Vuex中actions優(yōu)雅處理接口請求的方法

    在項(xiàng)目開發(fā)中,如果使用到了 vuex,通常我會將所有的接口請求單獨(dú)用一個文件管理,這篇文章主要介紹了Vuex中actions如何優(yōu)雅處理接口請求,業(yè)務(wù)邏輯寫在 actions 中,本文給大家分享完整流程需要的朋友可以參考下
    2022-11-11

最新評論