vue打印iframe嵌套的html页面,解决vue初始化触发函数但是传值失败的问题

vue打印iframe嵌套的html页面,解决vue初始化触发函数但是传值失败的问题


前言

这里主要是为了记录改变this指向解决vue初始化触发函数传值不了数据到html页面的问题,


提示:以下是本篇文章正文内容,下面案例可供参考

一、iframe使用注意事项?

示例:链接: link.

二、使用步骤

1.Vue 组件如何引入 iframe

代码如下(示例):

<template>
  <div style="overflow:hidden;" ref="wrapdiv">
    <button @click="sendmessage">发送数据</button>
    <div>子页面给父页面的数据:{{sondata}}</div>
    <iframe
      ref="mapFrame"
      id="mapFrame"
      scrolling="no"
      width="100%"
      :height="height"
      frameborder="0"
      :src="url"
    />
  </div>
</template>

<!-- 然后data中绑定src要引入的目录,那么第一步就完成了 -->

2.Vue 如何获取 iframe 对象以及 iframe 内的 window 对象并传值到html文件

代码如下(示例):

export default {
  data() {
    return {
      message: '首页',
      url: 'http://www.textiframe.com/',
      iframeWin: {},
      sondata: ' ',
      height: ''
    }
  },
  mounted() {
    //一定要改变this指向,不要问为什么---解决有时候vue页面初始化获取的值传送不了的情况
    let _this = this
    //获取到了iframe的对象
    console.log( _this.$refs.mapFrame)
    //获取到了iframe的window对象
     const iframeWin = mapFrame.contentWindow
    //赋值
     _this.getPointNurse()
     iframeWin.postMessage(info, '*')
     //传想要的数据就用对象的形式: iframeWin.postMessage({ nightInfo: this.nightInfo, time: time }, '*')
  }
}

3.子页面 iframe 内部如何接收信息并发送信息

接收代码如下(示例):

  $(function() {
        // 接受父页面发来的信息
        window.addEventListener(
          "message",
          function(messageEvent) {
             var data = messageEvent.data;
             let num = data.nightInfo
			 console.log(data)

传信息到vue代码如下(示例):

//1.必须在元素上绑定 onclick 
  //为了测试是否能接受到数据
    <button id="button1" onclick="callParent()">
      点击跳转
    </button>
//2.window.parent.postMessage 来发送数据
     function callParent() {
      window.parent.postMessage(
        {
          cmd: 'returnHeight',
          params: {
            success: true,
            result: {
              message: '我是子页面给父页面的数据哈哈'
            }
          }
        },
        '*'
      )
    }

4.Vue 组件如何打印iframe下的html

 document.getElementById('mapFrame').contentWindow.print();

总结

提示:这里对文章进行总结:业余生活要有意义,不要越轨。——华盛顿

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现STM32与ESP8266连接OneNet云平台,可以按照以下步骤进行: 1. 首先,硬件上需要准备好STM32和ESP8266模块。将STM32与ESP8266通过串口进行连接,确保两者之间能够进行通信。 2. 在OneNet云平台上创建一个新的设备,获取该设备的产品ID和设备ID。这将用于与OneNet云平台进行通信。 3. 在STM32上编写程序,实现STM32与ESP8266之间的串口通信。使用STM32的串口库函数,通过串口与ESP8266进行数据的发送和接收。 4. 在STM32的程序中,构建符合OneNet云平台要求的数据包,并通过ESP8266发送到OneNet云平台。可以使用HTTP或MQTT协议进行数据传输。具体的协议细节可以参考OneNet云平台提供的通信接口文档。 5. 在ESP8266上编写程序,实现与OneNet云平台的通信。根据OneNet云平台提供的API文档,使用ESP8266连接到OneNet云平台,并将从STM32接收到的数据上传到OneNet云平台。 6. 在OneNet云平台上配置相应的数据流和数据点,以便接收和展示从STM32和ESP8266发送过来的数据。 7. 在STM32程序中,可以考虑加入循环发送数据的功能,以实现实时监测和控制。 8. 调试完成后,上传STM32和ESP8266的程序到对应的硬件上,使其能够连接OneNet云平台。 通过以上步骤,就可以实现STM32与ESP8266连接OneNet云平台的程序。 ### 回答2: 要实现STM32与ESP8266连接到OneNet云平台,需要以下步骤: 1. 确保STM32开发板和ESP8266模块都正常工作,并且都有串口通信功能。 2. 在OneNet平台上创建设备和数据流,并获取到设备ID和API Key。 3. 在STM32开发环境中,配置串口通信和WiFi模块。 4. 在STM32中,使用串口与ESP8266模块进行通信。可以使用AT指令控制ESP8266,将其设置为STA(Station)模式并连接到WiFi网络。 5. 在STM32中,使用串口与ESP8266模块进行HTTP通信。可以使用AT指令发送HTTP请求,并将设备数据上传到OneNet云平台。 6. 在STM32中,解析ESP8266返回的HTTP响应,并根据需要进行相应的处理。 7. 在STM32中,根据需要,可以设置定时器来定期上传数据到OneNet云平台。 8. 在STM32中,可以通过解析OneNet云平台的HTTP响应,获取云平台发送的命令,并根据命令来执行相应的操作。 最后,通过以上步骤,就可以实现STM32与ESP8266连接到OneNet云平台并实现数据的上传和命令的执行。 ### 回答3: 要将STM32和ESP8266连接到OneNet云平台,需要进行以下步骤: 1. 准备硬件: - STM32单片机开发板 - ESP8266 WiFi模块 - 连接线等 2. 在OneNet云平台上创建设备和数据流: - 登录OneNet云平台账号 - 创建一个设备,并为设备添加相应的数据流,用于接收和发送数据 3. 配置ESP8266模块: - 将ESP8266与STM32开发板连接,确保串口通信正常 - 在ESP8266上烧录相关固件,如AT指令固件,可以使用串口助手通过AT指令测试ESP8266的连接和通信功能 4. 编写STM32程序: - 使用适当的开发环境,如Keil或STM32CubeIDE等,创建STM32项目 - 引入相应的库文件,如串口库、网络库等 - 初始化串口和网络连接 - 通过串口与ESP8266进行通信,发送AT指令以连接WiFi,获取IP地址 - 使用HTTP或MQTT等协议,将数据发送到OneNet云平台的设备数据流中 5. 测试连接和通信: - 将STM32开发板上电,并观察串口输出,确保模块正常连接WiFi - 向STM32发送指令来触发数据的传输 - 在OneNet云平台上监控数据流,验证数据是否成功接收和处理 总结一下,连接STM32和ESP8266到OneNet云平台的关键是通过ESP8266模块建立WiFi连接,然后通过STM32与ESP8266进行串口通信,将数据发送到OneNet云平台的设备数据流中。这样就可以实现STM32与OneNet云平台的数据传输和通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值