美文网首页
iframe怎么将参数传递给vue 父组件

iframe怎么将参数传递给vue 父组件

作者: 祈澈菇凉 | 来源:发表于2023-08-06 16:35 被阅读0次

在子页面的iframe中想将参数传递给Vue父组件,可以使用postMessage()方法将数据发送给父窗口。父组件可以通过监听message事件来接收并处理这些数据。

将参数从子页面的iframe传递给Vue父组件:

在子页面的iframe中:

// 发送消息给父窗口
const data = {
  imgUrl: '...',
  otherParam: '...'
};
window.parent.postMessage(data, '*');

在Vue父组件中:

mounted() {
  // 监听message事件
  window.addEventListener('message', this.handleMessage);
},
beforeDestroy() {
  // 在组件销毁前移除事件监听器
  window.removeEventListener('message', this.handleMessage);
},
methods: {
  handleMessage(event) {
    // 确保消息来自预期的源
    // 如果需要更严格的安全性,请验证event.origin
    if (event.source !== window.parent) {
      return;
    }

    // 处理接收到的消息数据
    const data = event.data;
    const imgUrl = data.imgUrl;
    const otherParam = data.otherParam;

    // 在Vue父组件中处理数据
    // ...
  }
}

在Vue父组件中,通过在mounted()钩子中监听message事件,可以获取子页面iframe发送的消息。使用handleMessage方法来处理接收到的数据。在这个方法中,可以访问event.data对象,其中包含从子页面传递过来的参数。

在Vue父组件销毁之前,需要使用beforeDestroy()钩子将事件监听器从message事件中移除,以避免潜在的内存泄漏或错误。

在接收到从iframe发送的参数后执行某些特定的逻辑,可以在handleMessage方法中添加相应的判断语句。使用条件语句(如if语句)来检查接收到的参数,并根据不同的条件执行不同的操作。

以下是一个示例,在handleMessage方法中添加判断逻辑:

handleMessage(event) {
  const data = event.data;
  
  // 检查接收到的参数
  if (data && data.imgUrl && data.otherParam) {
    // 参数完整,执行特定的操作
    console.log('打印子页面经纬度 iframe:', data);
    
    // 进一步处理参数
    // ...
  } else {
    // 参数不完整,忽略或执行其他操作
    console.log('接收到的参数不完整');
  }
}

这里使用条件语句检查接收到的参数data是否存在,并且是否具有imgUrl和otherParam属性。如果参数完整,可以打印参数的值并可以执行特定的操作。否则,如果参数不完整,就忽略它或执行其他适当的操作。

iframe接收vue界面传的值

在iframe中,使用window.addEventListener监听message事件,然后在事件处理程序中获取传递的数据:

<!-- iframe.html -->
<script>
// 监听来自父页面的消息
window.addEventListener('message', function(event) {
  const data = event.data;
  // 在这里处理接收到的消息
  console.log('Received message from parent:', data);
});
</script>

父页面使用postMessage方法向iframe发送消息。postMessage方法接收两个参数:要发送的数据和目标窗口的origin(使用通配符'*'表示可以从任何来源接收消息)。

iframe中使用window.addEventListener监听message事件,并在事件处理程序中获取传递的数据

这里需要注意一下,使用'*'作为目标窗口的origin存在安全风险。建议在实际使用中,指定确切的origin,以防止来自不受信任的来源的消息。

相关文章

  • React父子组件传值 + 值验证

    父组件向子组件传值 通过props,将父组件的state传递给了子组件。 子组件向父组件传值 父组件将更新数据的方...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • vue数据传递

    vue是单向数据流,能够直接将父组件的数据传递给子组件,但是,总会需要其他的数据传递方式   一、父组件向子组件传...

  • vue组件之间通信

    vue父组件给子组件传参使用props子组件给父组件传参使用时间派发$dispatch兄弟组件之间传递参数使用vuex

  • React 知识点小结(三):传参及路由

    方法绑定 不带参数: 带参数: 子到父的传参 在父组件创建方法,这个方法用来改变父组件的值把这个方法通过属性传递给...

  • 2018-07-26

    vue组件相关练习1、设计组件定义、分类(全局、局部组件)、2、组件传值、父传值给子组件,用props参数接收子传...

  • Vue父子组件传值

    父传子 父组件 Father.vue 子组件 Son.vue 子传父 子组件 Son.vue 父组件 ...

  • 小程序父子组件传值

    1.父传子 父组件组件传递子组件通过属性传值,例如tranBool="{{Bool}}"的形式将变量Bool传递给...

  • react子组件向父组件传值

    将父组件的方法传递给子组件,子组件通过this.props调用传递过来的方法,并带上参数 父组件 子组件 调用传递...

网友评论

      本文标题:iframe怎么将参数传递给vue 父组件

      本文链接:https://www.haomeiwen.com/subject/zrnipdtx.html