vue与iframe配合

需求说明
有很多人是这么说的,有vue,还用jquery干嘛,还用iframe干嘛。
vue强大不可否认,但是就因此认为在vue中不需要使用其他前端工程的方法,这是不对的。

源代码构成
一段大于3000行的js代码,主要是前端svg绘图,操作包括jquery、jquery-ui 创建、更改、删除svg节点,以及多种方式查看、修改节点属性,响应请求,
一段200行左右的js代码,自定义插件,基于原型链,主要用于暂存svg绘图的内容
一段css文件,未压缩状态1000多行
任务计划
需要将整个项目代码基于vue和vuex重构,时间不充裕也很难解决前端绘图各种响应,只能最简单的方式,将这一部分移植到iframe中,节约时间并完整保留功能

需要功能
vue 父级向 iframe 子级传递参数

<iframe
id="iframe"
ref="iframe"
:src="`../../../static/xxx.html?id=${this.id}`"
frameborder="0"
width="100%"
height="100%"
scrolling="no"
></iframe>


其中,iframe 引用的html文件必须放在static目录下,this.id 是要传递的参数

在 iframe里获取传的id
console.log(location.search);
1
iframe 调用 父级 vue 的函数
首先要在vue里声明函数,并挂到window上

created(){
window['go'] = () => {
this.go();
};
},
methods: {
go(){
//do somthing...
}
},

 

这段代码声明了一个函数名为go的函数,并在created里将其赋给window,名字仍为 go

在iframe 里调用该函数
window.parent.go();

这样就能调都在父级vue里声明的函数go

posted @ 2021-05-11 10:42  yuan_bao_er  阅读(839)  评论(0编辑  收藏  举报