前言

项目需要,我需要引入一个已经封装好的浏览器插件。插件只能以html的方式调用,

所以。我把插件的使用封装了一个html页面。vue项目则利用iframe的方式引入。

到这里我就遇到了一个问题,那就是vue项目中iframe的传值问题,这里做个笔记防止之后忘记,

如果有其他的方式,欢迎大家交流,不胜感激。

正文

先写几个简易的demo

需要用到的html

测试damo

请使用支持javascript的浏览器

1213123111220980980

打印本地的值

点击获取值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的浏览器

1213123111220980980

打印本地的值

点击获取值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的传值问题相关推荐

  1. vue 给iframe设置src_vue项目中,iframe的src动态赋值

    可以类似这样: /** * 动态创建iframe * @param dom 创建iframe的容器,即在dom中创建iframe.dom能够是div.span或者其它标签. * @param src ...

  2. vue 给iframe设置src_vue组件中使用iframe元素

    需要在本页面中展示vue组件中的超链接,地址栏不改变的方法: GoBack {{item.name}} export default { name: 'hello', data () { return ...

  3. vue 给iframe设置src_vue 中引入iframe,动态设置其src,遇到的一些小问题总结

    1.重置其样式,去掉外框以及滚动条等 id="myIframe" ref="iframe_a" :src="mySrc" width=&qu ...

  4. vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换

    引用地址:vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换 - 长空雁叫霜晨月 - 博客园  项目预览地址:https://volodya-01.github.io/vue2.0_t ...

  5. 用iframe设置代理解决ajax跨域请求问题

    用iframe设置代理解决ajax跨域请求问题 参考文章: (1)用iframe设置代理解决ajax跨域请求问题 (2)https://www.cnblogs.com/ranzige/p/370965 ...

  6. android chrome iframe设置src属性无法启动app

    0x01 Android Intents with Chrome Android有一个很少人知道的特性可以通过web页面发送intent来启动apps.以前通过网页启动app是通过设置iframe的s ...

  7. iframe优缺点、X-Frame-Options(如何防止点击劫持、设置页面是否能作为iframe嵌套)、iframe长轮询和应用场景

    目录 iframe优缺点 优点 缺点 为什么尽量少用iframe iframes阻塞页面加载,影响网页加载速度 唯一的连接池 解决 iframe应用场景 iframe长轮询 iframe跨域使用 防嵌 ...

  8. CMS可视化项目-iframe嵌套 token Object.keys(data).map()遍历对象包数组的数据 select下拉菜单

    iframe嵌套单页面 iframe是一个行内块元素,如果希望改变它的位置就需要转块级元素 <style>/* iframe是一个行内块元素,如果希望改变它的位置就需要转块级元素 */if ...

  9. ios vue 添加本地音乐_Vue 项目一些常见问题的解决方案

       戳蓝字「前端技术优选」关注我们哦! 有一些问题不限于 Vue,还适应于其他类型的 SPA 项目. 1. 页面权限控制和登陆验证 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色 ...

最新文章

  1. 树形结构在关系数据库中的设计
  2. 费用保险单,如何失焦时自动补零
  3. windows 不安装jdk 运行 jar_新手必看。关于Python3——windows安装与运行(详细版)...
  4. python数据结构与算法(11)
  5. GUI_PICTURE以及context_menu学习笔记
  6. mysql select into和insert into select
  7. 怎样分组教学计算机学生才有兴趣,学生计算机论文,关于如何激发职业中专学生学习计算机的兴趣相关参考文献资料-免费论文范文...
  8. zookeeper的设计猜想-关于 2PC 提交
  9. H.264/AVC视频编解码技术详解 第一章 视频信息与压缩编码
  10. 02头文件的冲突导致,清除缓冲区失败之cin.ignore() 问题
  11. update语句更新多条记录, 标记下
  12. 题解 P1006 传纸条
  13. 在Node.js中发起HTTP请求的5种方法
  14. 关于pdf阅读器的选择
  15. SpringMVC+Vue实现前后端分离的宠物管理系统
  16. iOS YYText的使用笔记二(YYLabel聊天表情+文字并排)
  17. 寻求 华中科大《机械控制工程基础》第五版习题参考答案
  18. DNA甲基化经CTCF和黏连蛋白复合体调节RNA可变剪切
  19. Java递归删除空文件夹
  20. 保护理念下的森林公园游憩方式创新设计(转)

热门文章

  1. Android webview 写入cookie的解决方法以及一些属性设置
  2. VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法)
  3. tomcat无法正常关闭问题分析及解决
  4. javax.crypto.BadPaddingException: Given final block not properly padded解决方案
  5. 从JavaScript数组中获取随机项[重复]
  6. 使用jQuery提交表单
  7. 获得插入行身份的最佳方法?
  8. netty-客户端.group()方法 源码分析.md
  9. uva 10401 Injured Queen Problem(dp)
  10. 文件及文件夹更改通知/监测软件TheFolderSpy