项目中使用iframe引入html 解决路由错乱问题以及父子组件传值调用方法

iframe与外部之间传值

父组件

        <iframe
          id="iframe"
          src="luckysheet/index.html"
          frameborder="0"
          scrolling="no"
          style="width: 100%; height: 60vh; border: 0"
        />


      const frame = document.getElementById('iframe');
      frame.onload = function () {
        //调取子组件中的方法,传值到子组件
        frame.contentWindow.filesDropped(data);
		//获取子组件的方法
        frame.contentWindow.getChild = getChild;
      };
      
		const getChild = (data: any) => {
		  console.log('获取到子组件数据', data);
		};

子组件:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>luckysheet</title>

	<link rel='stylesheet' href='./plugins/css/pluginsCss.css' />
	<link rel='stylesheet' href='./plugins/plugins.css' />
	<link rel='stylesheet' href='./css/luckysheet.css' />
	<link rel='stylesheet' href='./assets/iconfont/iconfont.css' />
	<script src="./plugins/js/plugin.js"></script>
	<script src="./luckysheet.umd.js"></script>
	<style>
		* {
			margin: 0px;
			padding: 0px;
		}

		#luckysheet {
			width: 100vw;
			height: 100vh;
		}

		#chat-assistant-container {
			display: none;
		}
	</style>
</head>

<body>
	<div>
		<button type="button" id="btn1">传值给父组件</button>
	</div>
	<div id="luckysheet"></div>
</body>

</html>
<script>

	let btn1 = document.getElementById('btn1');
	btn1.onclick = () => {
		window.getChild('hhh');
	}
	
	function filesDropped(data) {
		console.log(data);
		window.luckysheet.create({
			container: 'luckysheet', //luckysheet is the container id
			// lang: 'zh', // 设定表格语言
			showinfobar: false,
			data

		});
	}
</script>

假设 父组件下有两个同级的iframe1子组件与iframe2子组件;需求是 父组件可以与iframe之间传值,iframe1与iframe2之间也可以相互传值;

方法一、通过子组件iframe1向父组件传值,再通过父组件向子组件iframe2传值可达到目的;

注意:模拟时 需要开启服务器,否则会出现跨域问题!

看图你应该就明白了
在这里插入图片描述

问题描述:

在项目中使用iframe引入html,引入的html中有路由跳转,当点击html页面中的路由跳转时,浏览器history会记录次路由,当在引入iframe返回上一级的页面中使用 router.go(-1)就会返回iframe中距离的路由,这样不符合逻辑解决方案如下:

主要是由于浏览器history记录了iframe嵌入页面的路由信息,这个信息不论是iframe内的地址跳转,还是iframe src的切换,都会被记录,下面给出解决方案

解决方案 如涉及iframe内地址的跳转

首先进入页面,记录history length

    let historyLength = 1;
    onMounted(() => {
      // iframe.value.contentWindow.location.replace(htmlUrl.value);
      historyLength = window.history.length;
    });```

## 然后在页面返回时获取当前history length,相减即可得知需要返回多少个页面

```typescript
    const clickBack = () => {
      // router.go(-1);
      let nowhl = window.history.length;
      let backCount = nowhl - historyLength + 1;
      router.go(-backCount);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/321962.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8. 《自动驾驶与机器人中的SLAM技术》基于保存的自定义NDT地图文件进行自动驾驶车辆的激光定位

目录 1. 为 NDT 设计一个匹配度评估指标&#xff0c;利用该指标可以判断 NDT 匹配的好坏。 2. 利用第 1 题的指标&#xff0c;修改程序&#xff0c;实现 mapping 部分的回环检测。 3. 将建图结果导出为 NDT map&#xff0c;即将 NDT 体素内的均值和协方差都存储成文件。 4.…

学习记录11-SPI通信(软件)

目录 前言 一、引脚定义 二、代码 1.初始化 2.操作代码 三、验证 前言 对SPI进行结构封装&#xff0c;方便使用。方便讲解&#xff0c;用W&#xff12;&#xff15;Q&#xff16;&#xff14;芯片进行讲解 一、引脚定义 #define SPI_CS_PROT GPIOB //CS接线引脚通道…

CAN总线记录仪在车企服务站的应用

CAN总线记录仪在车企服务站的应用 CAN总线记录仪在车企服务站中有着广泛的应用。这种设备可以记录车上的CAN总线数据&#xff0c;方便工程师进行分析&#xff0c;以找出可能存在的问题。CAN记录仪一般采用TF卡来存储数据&#xff0c;实现离线脱机实时存储。数据存储完毕后&…

【python】12.字符串和正则表达式

使用正则表达式 正则表达式相关知识 在编写处理字符串的程序或网页时&#xff0c;经常会有查找符合某些复杂规则的字符串的需要&#xff0c;正则表达式就是用于描述这些规则的工具&#xff0c;换句话说正则表达式是一种工具&#xff0c;它定义了字符串的匹配模式&#xff08;…

node各个版本的下载地址

下载地址&#xff1a; https://nodejs.org/dist/ 可以下载多个版本&#xff0c;使用nvm控制切换&#xff08;需要先安装nvm再安装node&#xff09; nvm下载地址&#xff08;访问的是github&#xff0c;请科学上网&#xff0c;下载后解压安装exe即可&#xff09;&#xff1a;h…

照片删除了还有救,19 款最佳免费照片恢复软件方法分享!

如果您曾经丢失过数字文件&#xff0c;那将是一种熟悉的感觉。也许您不小心删除了照片。或者&#xff0c;也许某些文件只是消失了。不管结果如何&#xff0c;都令人心碎。 不过&#xff0c;这个故事不需要有一个悲伤和遗憾的结局。现在有许多不同品牌的照片恢复软件可以挽救局…

《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(7)-Fiddler状态面板-QuickExec命令行

1.简介 Fiddler成了网页调试必备的工具&#xff0c;抓包看数据。Fiddler自带命令行控制&#xff0c;并提供以下用法。Fiddler的快捷命令框让你快速的输入脚本命令。 除了输入默认命令&#xff0c;也可以自定义命令&#xff0c;你可以通过编辑 FiddlerScript 来增加新命令&…

Android-常用数据结构和控件

HashMap 的原理 HashMap 的内部可以看做数组链表的复合结构。数组被分为一个个的桶(bucket)。哈希值决定了键值对在数组中的寻址。具有相同哈希值的键值对会组成链表。需要注意的是当链表长度超过阈值(默认是8)的时候会触发树化&#xff0c;链表会变成树形结构。 把握HashMap的…

C练习——肇事卡车车牌号

题目&#xff1a; 一辆卡车违反交通规则&#xff0c;撞人后逃跑。现场有3人目击事件&#xff0c;但没有记住车牌号&#xff0c;只记住了车号的一些特征。 甲说&#xff1a;“牌照前两位数字是相同的”&#xff0c;乙说&#xff1a;“牌照的后两位数字是相同的&#xff0c;但与…

网络安全技术新手入门:利用Kali Linux生成简单的远程控制木马

目录 前言 一、生成远控木马 二、传播木马&#xff08;现实中通过免杀技术进行传播&#xff0c;此文章为新手入门教程&#xff0c;故通过关闭杀毒程序的方法让初学者熟悉流程&#xff09; 三、配置攻击模块 四、进行远程控制 五、建议 前言 相关法律声明&#xff1a;《中…

ERA5数据集解算Tm(水汽加权平均温度)

Part1 Tm&#xff08;代码获取方式在文章最后&#xff09; Tm 是 GNSS 反演 PWV 的关键性因素&#xff0c;由 Tm 可以求得转换因素 Π&#xff0c;Π*ZWD&#xff08;天顶湿延迟&#xff09;可以的得到 PWV。 Part 2Tm 的计算方法 Tm 的计算方法有两种&#xff0c;下面进行分…

C#编程-使用事件

使用事件 事件是一个动作或发生的事情,例如:鼠标点击、按键、鼠标移动或系统产生的通知。应用程序可以在事件发生的时候做出响应。通知的一个示例是中断。事件是对象发生的消息以表示事件的发生。事件是进程内通信的有效方法。它们对对象时有用的,因为它们标识了单个状态改…

swing快速入门(四十四)拖动、编辑JTree结点

注释很详细&#xff0c;直接上代码 新增内容&#xff08;源码细节知识点巨多&#xff0c;建议细看&#xff09; 1.设置JTree可编辑 2.使用JTree关联的数据模型实现节点的增删改 3.鼠标拖动节点事件设计及处理方法 4.手动刷新视图与自动刷新的方法区别 5.自定位节点视图方法 源码…

【Redis集群】docker实现3主3从扩缩容架构配置案例

一&#xff0c;集群规划及准备工作 架构实现&#xff1a;Redis3主3从 二&#xff0c;搭建命令 第一步&#xff0c;创建6台服务&#xff1a; docker run -d --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --clust…

单表的查询练习

一、单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 显示所有职工的基本信息。 mysql8.0 [chap03]>select * from worker; 查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 mysq…

geemap学习笔记047:边缘检测

前言 边缘检测适用于众多的图像处理任务&#xff0c;除了上一节[[geemap046&#xff1a;线性卷积–低通滤波器和拉普拉斯算子|线性卷积]]中描述的边缘检测核之外&#xff0c;Earth Engine 中还有几种专门的边缘检测算法。其中Canny 边缘检测算法使用四个独立的滤波器来识别对角…

如何通过Burp Suite专业版构建CSRF PoC

Burp Suite是一款强大的渗透测试利器&#xff0c;可以利用它来高效的执行渗透攻击&#xff0c;接下来介绍如何通过Burp Suite Pro来构建CSRF PoC。 如果还没安装burp suite&#xff0c;请参阅【Burp Suite专业版本安装配置及使用指导 】 在Bupr中找到拦截的请求&#xff0c;右…

时序分解 | Matlab实现SMA-CEEMDAN利用黏菌优化算法优化CEEMDAN时间序列信号分解

时序分解 | Matlab实现SMA-CEEMDAN利用黏菌优化算法优化CEEMDAN时间序列信号分解 目录 时序分解 | Matlab实现SMA-CEEMDAN利用黏菌优化算法优化CEEMDAN时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 SMA-CEEMDAN利用黏菌优化算法优化CEEMDAN Matlab语言…

【编码魔法师系列_构建型4】原型模式(Prototype Pattern)

学会设计模式&#xff0c;你就可以像拥有魔法一样&#xff0c;在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们&#xff08;GoF&#xff09;凝聚出来的最佳实践&#xff0c;可以提高代码的可读性、可维护性和可重用性&#xff0c;从而让我们的开发效率更高。通…