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

本文详细介绍了在Vue中如何解决初始化时通过iframe传递数据到嵌套的HTML页面,并实现双向通信。通过改变this指向,确保数据能够正确传递。同时,展示了如何在Vue组件内打印iframe内容的解决方案。
摘要由CSDN通过智能技术生成

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();

总结

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

以下是一个基于栈的出栈序列检查的C语言代码: ```c #include <stdio.h> #include <stdlib.h> #define MAX_STACK_SIZE 100 int stack[MAX_STACK_SIZE]; int top = -1; void push(int val) { if (top == MAX_STACK_SIZE - 1) { printf("Stack overflow\n"); exit(1); } stack[++top] = val; } int pop() { if (top == -1) { printf("Stack underflow\n"); exit(1); } return stack[top--]; } int main() { int n, i, j; int push_seq[MAX_STACK_SIZE], pop_seq[MAX_STACK_SIZE]; printf("Enter the size of the sequence: "); scanf("%d", &n); printf("Enter the push sequence: "); for (i = 0; i < n; i++) { scanf("%d", &push_seq[i]); } printf("Enter the pop sequence: "); for (i = 0; i < n; i++) { scanf("%d", &pop_seq[i]); } i = 0; j = 0; while (i < n && j < n) { if (push_seq[i] == pop_seq[j]) { i++; j++; } else if (top != -1 && stack[top] == pop_seq[j]) { pop(); j++; } else { push(push_seq[i++]); } } while (top != -1 && j < n) { if (stack[top] == pop_seq[j]) { pop(); j++; } else { break; } } if (top == -1 && j == n) { printf("The pop sequence is valid.\n"); } else { printf("The pop sequence is not valid.\n"); } return 0; } ``` 该程序要求用户输入一个序列的大小,一个压栈序列和一个出栈序列。然后,程序使用一个基于栈的算法来检查出栈序列的合法性。如果出栈序列是合法的,程序将输出“ The pop sequence is valid.”,否则输出“The pop sequence is not valid.”。 该算法的基本思想是模拟压栈和出栈过程。我们从压栈序列的开头开始遍历,遇到一个和出栈序列的当前元素相等的元素时,我们将它出栈。否则,我们将该元素压入栈中。如果栈顶元素和出栈序列的当前元素相等,则将栈顶元素出栈。 在遍历完压栈序列后,我们检查栈中剩余的元素是否可以与出栈序列中的元素匹配。如果可以,则弹出栈顶元素并移动到下一个出栈元素。如果不能匹配,则出栈序列无效。 此算法的时间复杂度为O(n),其中n为序列的大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值