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

这篇具有很好参考价值的文章主要介绍了项目中使用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>

项目中使用iframe引入html 解决路由错乱问题以及父子组件传值调用方法,前端技巧方法,Vue,JavaScript,html,服务器,前端

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

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

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

看图你应该就明白了
项目中使用iframe引入html 解决路由错乱问题以及父子组件传值调用方法,前端技巧方法,Vue,JavaScript,html,服务器,前端

iframe 路由错乱 问题描述:

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

主要是由于浏览器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);
    }

到了这里,关于项目中使用iframe引入html 解决路由错乱问题以及父子组件传值调用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 项目难点:解决IOS调用起软键盘之后页面样式布局错乱问题

    需求背景 :     开发了一个类似问卷星的问卷系统并重构的项目,开始开发的  PC 端 ,其中最头疼的一点无非就是 IE 浏览器的兼容适配性问题;     再之后项目经理要求同步进行开发  移动端  ,简单的说就是写 H5 页面,到时候会内嵌在 App 应用或 小程序 里,刚开始都是

    2024年02月12日
    浏览(29)
  • 解决引入spire.doc.free-3.9.0.jar导致spring boot项目无法使用maven的install问题

    问题背景: 在一个项目中需求中需要导出一个word模板,那之前有做过一个这个类似需求,这次使用的是freemarker模版。在引入spire.doc.free-3.9.0.jar依赖的时候发现maven依赖报红色,悬浮提示aliyun找不到改包,没有太在意这个部分,本地能够正常使用。本地仓库存在这个jar包,并

    2024年02月15日
    浏览(38)
  • Vue 项目路由、自定义指令、api方法自动引入资源(require.context使用)

    require.context(directory,useSubdirectories,regExp) 1:directory:哪个文件夹 2:useSubdirectories:是否需要找到子文件夹 3: regExp:正则表达式(一般指文件的后缀) 以下是单个js文件 接口的命名不能重复。 如果项目较大,建议接口命名需要有一个统一的规范来避免出现命名重复的问题

    2024年02月16日
    浏览(29)
  • 解决IDEA创建项目时无法引入依赖问题:Cannot resolve **.**.**(已解决)

    今天在创建SpringBoot整合MyBatis项目时出现报错: Cannot resolve org.springframework:spring-tx:5.3.26 Cannot resolve org.mybatis:mybatis:3.5.11 Cannot resolve org.springframework:spring-jdbc:5.3.26 在网上查找了很多方法均不适用,开始以为又是版本的问题,可是一想SpringBoot中依赖的版本已经确定好了。 然后有

    2023年04月16日
    浏览(38)
  • 【问题解决】ElasticSearch分页查询时数据顺序错乱/不一致的问题

    问题描述: 使用ElasticSearch分页查询时,每次输入同样的分页参数以及查询条件,得到的结果不一致的问题。 问题分析: ElasticSearch中索引可能是由多个分片构成的,并且每个分片可能拥有多个副本,其对应的设置时索引建立时的设置。 number_of_shards:索引拥有多少个分片 n

    2024年02月02日
    浏览(43)
  • webpack安装和使用及超详细配置一个基本vue项目的全部流程(包括路由、less、引入图片渲染)

    webpack官网: https://webpack.docschina.org/concepts/ 一:搭建一个简单的webpack项目 1:准备工作 需要在node环境才能使用webpack,所以需要先安装node,安装node请自行百度。dddd 如图,我这里使用的是14.17.0版本的 2:初始化项目 首先创建一个文件夹,这里我的命名是myWebpack,然后使用n

    2024年02月02日
    浏览(31)
  • 【Vue】 在 vue 中使用 iframe 挂载 html 文件

    首先需要将要挂载的 html 文件放到 public 文件夹中 路径的引用形式 通过绑定 ref 获取到 iframe,data为我需要传递的数据,通过 iframes.postMessage 的方法进行传递。 postMessage 通信具体用法请参考:https://blog.csdn.net/qq_45677671/article/details/128238860

    2024年02月17日
    浏览(30)
  • 解决项目迁移vite引入图片资源报require is not defined的问题

    Vite是一种轻量快速的前端构建工具,能够显著提升前端开发体验,而且官方已经发布v4版本,相对比较稳定。在把VueCli搭建的项目迁移到Vite的过程中遇到了个问题,下面分享一下问题及解决办法。 在 script 标签里面引入的图片资源没生效,然后一看控制台,报错显示 require

    2024年02月03日
    浏览(33)
  • 解决vue3+vite项目中引入mockjs失败的问题--无法找到模块“mockjs”的声明文件

     看到上面报错,根据提示 修改声明方式 declare module \\\'mockjs\\\'  我们修改一下引入的声明,发现修改之后仍然报错;    解决方法: 需要在vite-env.d.ts文件中,添加  declare module \\\'mockjs\\\',保存即可  然后就可以正常使用了  

    2024年02月11日
    浏览(37)
  • 解决Unity3D打包到PC端,UGUI的格式错乱问题

    Tips:在UI界面开始设计之前,一定先要设置好各项UI元素的参照位置,以及参考的屏幕分辨率比例,不然你精心设计好的UI界面在别人电脑上一看,直接堆在了一起或者根本显示不全,后面再改会很麻烦。 前言:本文主要分两部分,主讲第一部分。并不是第二部分不重要,而

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包