• Vue中iframe和组件的通信


    最近的项目开发中用到了Vue组件中嵌套iframe,相应的碰到了组件和HTML的通信问题,场景如下:demo.vue中嵌入 test.html

    由于一般的iframe嵌套是用于HTML文件的,在vue中我们需要在vue文件注册一个全局的方法,在iframe中某个事件触发时,可以回传到vue组件

    demo.vue主要代码:

    <template>

      <iframe ref="iframe" src='test.html'> </iframe>

    </template>

    <script>

    export default {

       data() {

        return {

           spanClick: 'handleSpanClick' //html中需要响应的事件

        }

      },

      created() {

        let _this = this

        window[this.spanClick] = (params) => {

           _this.doSomeThing(params)    

         }

      }, 

     methods: {

       doSomeThing(params){

         //todo

        } 

      }

    }

    </script>

    test.html主要代码;

    <div>

       <span onclick="handleTest(this)">test</span>

    </div>

    <script>

     function handleTest(event) {

      window.parent['handleSpanClick'](event.innerText)

    }

    <script>

    有的时候,我们需要从vue组件中向html传参,一种比较简单的方法是在iframe的src中做拼接,举个栗子,我们需要在vue中向HTML传入一个json

    data = {

      id: 1,

      name: 'will'

    这时候的src = ‘test.html?’ + encodeURIComponent(JSON.stringify(data))     //使用encodeURIComponent 是为了在传参的时候对参数加密一下防止乱码

    相应的在test.html中需要解码:

    JSON.parse(decodeURIComponent(window.location.search.slice(1)))

     
     
  • 相关阅读:
    C# DataConstruct 数据结构关于 Array,ArrayList,List,HashTable,Dictionnary的学习记录
    Moq 在.net Core 单元测试中的使用
    记录一些 APM 仓储
    .net core Swagger 过滤部分Api
    C# Conversion Keywords
    (转载)C# 枚举 FlagsAttribute用法
    [慢更]Sublime Text 快捷键及使用过的插件
    Docker发布程序那些事
    RabbitMQ 学习日记
    Linux Tomcat7.0安装配置实践总结
  • 原文地址:https://www.cnblogs.com/doublewill/p/11802254.html
Copyright © 2020-2023  润新知