vue 给iframe设置src_vue项目iframe的传值问题
前言
项目需要,我需要引入一个已经封装好的浏览器插件。插件只能以html的方式调用,
所以。我把插件的使用封装了一个html页面。vue项目则利用iframe的方式引入。
到这里我就遇到了一个问题,那就是vue项目中iframe的传值问题,这里做个笔记防止之后忘记,
如果有其他的方式,欢迎大家交流,不胜感激。
正文
先写几个简易的demo
需要用到的html
测试damo
请使用支持javascript的浏览器
打印本地的值
点击获取值vue的值
varwpsData;var aaaaa = '22222'
functionsetData(){
alert(aaaaa)
}functiongetData(){
alert(wpsData)
}
父级页面用iframe调用html
点击获取iframe数据
向iframe中发送数据
export default{
name:'wps-edit',
props: {},
mounted() {},
methods: {getData() {
},setData(data) {
}
}
}
这里提供两种传值方式:
第一种:postMessage
1、父页面生命周期函数中
const mapFrame = this.$refs['mainIframe']if (mapFrame.attachEvent) { //兼容浏览器判断
mapFrame.attachEvent('onload', function() {
const iframeWin=mapFrame.contentWindow
iframeWin.postMessage('初始化值', '*')//data传递的参数 *写成子页面的域名或者是ip
})
}else{
mapFrame.οnlοad= function() {
const iframeWin=mapFrame.contentWindow
iframeWin.postMessage('初始化值', '*')
}
}
2、html页面接受数据
window.addEventListener('message', function(messageEvent) {var data =messageEvent.data;
console.log('收到vue的数据:',data);
wpsData =data
console.log('wpsData:',wpsData);
}, false);
在页面加载结束,你就能发现html页面中的wpsData值已经被改变成了父级页面传过来的值。
这种方式是加载一次,数据不能实时同步,或者我没有实时同步数据的方法
第二种:直接操作iframe
1、父级页面直接给iframe的window对象设置值
setData(data) {
const obj1= window.frames['mainIframe']//获得对应iframe的window对象
obj1.wpsData = '设置的数据'
}
2、父级页面设置完值后,在html页面直接打印对应的参数,此时会发现wpsData数据已经改变
functiongetData(){
alert(wpsData)
}
这种方式每次在父级页面改变值,html页面就会实时更新数据,我暂时用的这种方式,至于有什么bug,我正在研究。
完整的页面代码
html页面
测试damo
请使用支持javascript的浏览器
打印本地的值
点击获取值vue的值
varwpsData;
window.addEventListener('message', function(messageEvent) {var data =messageEvent.data;
console.log('收到vue的数据:',data);
wpsData =data
console.log('wpsData:',wpsData);var aaaaa = '22222'
functionsetData(){
alert(aaaaa)
}functiongetData(){
alert(wpsData)
}
父级页面
点击获取iframe数据
向iframe中发送数据
export default{
name:'wps-edit',
props: {},
mounted() {
const mapFrame= this.$refs['mainIframe']if (mapFrame.attachEvent) { //兼容浏览器判断
mapFrame.attachEvent('onload', function() {
const iframeWin=mapFrame.contentWindow
iframeWin.postMessage('初始化值', '*')//data传递的参数 *写成子页面的域名或者是ip
})
}else{
mapFrame.οnlοad= function() {
const iframeWin=mapFrame.contentWindow
iframeWin.postMessage('初始化值', '*')
}
}
},
methods: {
loaded() {
const vm= this.$refs.mainIframe.contentWindow.vm
console.log(vm)//vm.func1()
},
getData() {
const obj1= window.frames['mainIframe']//获得对应iframe的window对象
alert(obj1.aaaaa)
},
getWpsData() {return 'wps数据'},
setData(data) {
const obj1= window.frames['mainIframe']//获得对应iframe的window对象
obj1.wpsData = '设置的数据'
}
}
}
结尾
学无止境,还是有很多不知道的,继续精进技术。。。
欢迎大家沟通交流。
vue 给iframe设置src_vue项目iframe的传值问题相关推荐
- vue 给iframe设置src_vue项目中,iframe的src动态赋值
可以类似这样: /** * 动态创建iframe * @param dom 创建iframe的容器,即在dom中创建iframe.dom能够是div.span或者其它标签. * @param src ...
- vue 给iframe设置src_vue组件中使用iframe元素
需要在本页面中展示vue组件中的超链接,地址栏不改变的方法: GoBack {{item.name}} export default { name: 'hello', data () { return ...
- vue 给iframe设置src_vue 中引入iframe,动态设置其src,遇到的一些小问题总结
1.重置其样式,去掉外框以及滚动条等 id="myIframe" ref="iframe_a" :src="mySrc" width=&qu ...
- vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换
引用地址:vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换 - 长空雁叫霜晨月 - 博客园 项目预览地址:https://volodya-01.github.io/vue2.0_t ...
- 用iframe设置代理解决ajax跨域请求问题
用iframe设置代理解决ajax跨域请求问题 参考文章: (1)用iframe设置代理解决ajax跨域请求问题 (2)https://www.cnblogs.com/ranzige/p/370965 ...
- android chrome iframe设置src属性无法启动app
0x01 Android Intents with Chrome Android有一个很少人知道的特性可以通过web页面发送intent来启动apps.以前通过网页启动app是通过设置iframe的s ...
- iframe优缺点、X-Frame-Options(如何防止点击劫持、设置页面是否能作为iframe嵌套)、iframe长轮询和应用场景
目录 iframe优缺点 优点 缺点 为什么尽量少用iframe iframes阻塞页面加载,影响网页加载速度 唯一的连接池 解决 iframe应用场景 iframe长轮询 iframe跨域使用 防嵌 ...
- CMS可视化项目-iframe嵌套 token Object.keys(data).map()遍历对象包数组的数据 select下拉菜单
iframe嵌套单页面 iframe是一个行内块元素,如果希望改变它的位置就需要转块级元素 <style>/* iframe是一个行内块元素,如果希望改变它的位置就需要转块级元素 */if ...
- ios vue 添加本地音乐_Vue 项目一些常见问题的解决方案
戳蓝字「前端技术优选」关注我们哦! 有一些问题不限于 Vue,还适应于其他类型的 SPA 项目. 1. 页面权限控制和登陆验证 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色 ...
最新文章
- 树形结构在关系数据库中的设计
- 费用保险单,如何失焦时自动补零
- windows 不安装jdk 运行 jar_新手必看。关于Python3——windows安装与运行(详细版)...
- python数据结构与算法(11)
- GUI_PICTURE以及context_menu学习笔记
- mysql select into和insert into select
- 怎样分组教学计算机学生才有兴趣,学生计算机论文,关于如何激发职业中专学生学习计算机的兴趣相关参考文献资料-免费论文范文...
- zookeeper的设计猜想-关于 2PC 提交
- H.264/AVC视频编解码技术详解 第一章 视频信息与压缩编码
- 02头文件的冲突导致,清除缓冲区失败之cin.ignore() 问题
- update语句更新多条记录, 标记下
- 题解 P1006 传纸条
- 在Node.js中发起HTTP请求的5种方法
- 关于pdf阅读器的选择
- SpringMVC+Vue实现前后端分离的宠物管理系统
- iOS YYText的使用笔记二(YYLabel聊天表情+文字并排)
- 寻求 华中科大《机械控制工程基础》第五版习题参考答案
- DNA甲基化经CTCF和黏连蛋白复合体调节RNA可变剪切
- Java递归删除空文件夹
- 保护理念下的森林公园游憩方式创新设计(转)
热门文章
- Android webview 写入cookie的解决方法以及一些属性设置
- VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法)
- tomcat无法正常关闭问题分析及解决
- javax.crypto.BadPaddingException: Given final block not properly padded解决方案
- 从JavaScript数组中获取随机项[重复]
- 使用jQuery提交表单
- 获得插入行身份的最佳方法?
- netty-客户端.group()方法 源码分析.md
- uva 10401 Injured Queen Problem(dp)
- 文件及文件夹更改通知/监测软件TheFolderSpy