前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iframe怎么将参数传递给vue 父组件

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

作者头像
王小婷
发布2023-08-10 11:19:22
5040
发布2023-08-10 11:19:22
举报
文章被收录于专栏:编程微刊编程微刊

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

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

在子页面的iframe中:

代码语言:javascript
复制
// 发送消息给父窗口
const data = {
  imgUrl: '...',
  otherParam: '...'
};
window.parent.postMessage(data, '*');

在Vue父组件中:

代码语言:javascript
复制
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方法中添加判断逻辑:

代码语言:javascript
复制
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事件,然后在事件处理程序中获取传递的数据:

代码语言:javascript
复制
<!-- 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,以防止来自不受信任的来源的消息。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 将参数从子页面的iframe传递给Vue父组件:
  • iframe接收vue界面传的值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档